2014-09-23 18 views
6

Quindi ho il seguente Fiddle che ha impostato un'ellissi in un testo in due righe. Quindi voglio avere un link "Altro" in linea con il testo.Ellissi di testo CSS incluso il link "Altro"

http://jsfiddle.net/csYjC/2876/

Quindi, se il nostro testo ha più di due righe, dovrebbe assomigliare a questo:

enter image description here

Questo è corretto. Tuttavia:

enter image description here

Questo non è corretta (dovrebbe essere in linea con il testo).

codice è come segue:

<div class="text"> 
    <div>Lorem ipsum dolor sit amet, Lorem Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem Lorem i</div> 
    <a href="#">More</a> 
</div> 

E il css:

.text{ 
    display: inline; 
    overflow: hidden; 
    text-overflow: ellipsis; 
    display: -webkit-box; 
    line-height: 24px;  /* fallback */ 
    max-height: 48px;  /* fallback */ 
    -webkit-line-clamp: 2; /* number of lines to show */ 
    -webkit-box-orient: vertical; 
} 

.text a { 
    position: absolute; 
} 

Credo che deve essere facile ... Grazie in anticipo.

+0

non si può mettere 'a' in quel' div'? –

+0

'se il nostro testo ha più di due righe' => suona come javascript. E hai bisogno di eventi per quando l'utente ridimensiona la finestra (per mantenere il comportamento corretto) –

+0

Quella proprietà ellissi si sta prendendo cura delle 2 righe ... Se scrivo l'a dentro il div ... http://jsfiddle.net/ csYjC/2879/Va bene se il "More" è nella stessa riga, ma in caso contrario, non lo è. –

risposta

0

Il div all'interno di .text viene ancora visualizzato come elemento di blocco. Usare questo per risolvere il problema:

.text > div { display: inline; } 

http://jsfiddle.net/csYjC/2880/

+0

Ciao, questo mette il "di più" in linea con il testo in modo corretto.Ma notate che se ridimensioni le finestre, il More non è nel posto giusto (diventa un po 'pazzo). Inoltre, ho appena realizzato che in Firefox i puntini di sospensione non funzionano. –

+0

@FerranNegre Cambiare a '.text un {position: relative;}' http://jsfiddle.net/hegsgwrv/ – OJFord

+0

Hi. Ci ho provato. Continua a non funzionare. Ora è sempre in linea con il testo (quando lo voglio sotto quando sono state completate due righe). Se la ridimensionate molto, vedrete che il collegamento "Altro" scompare. E ancora non i puntini di sospensione con Firefox ... potrebbe essere un'altra cosa. –

0

DEMO: http://jsbin.com/hatuv/1/edit

<div class="text"> 
    <p>Lorem ipsum dolor sit amet, Lorem Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem Lorem i </p> <a href="#">More</a> 
    </div> 

CSS

.text { 
    overflow: hidden /* just for clearing */ 
} 
.text p { 
    display: inline-block; 
    text-overflow: ellipsis; 
    width: 100%; 
    white-space: nowrap; 
    overflow: hidden; 
    margin-top: 0; 
    box-sizing: border-box; 
    padding-right: 40px; 
    margin-right: -40px; 
} 
.text a { 
    float: right 
} 
+0

Sembra carino. È anche possibile fare in modo che il pulsante "Altro" vada sotto il testo quando il testo è già adatto a tutta la linea? Inoltre, stai usando solo 1 linea, sto provando con 2 linee. –

+0

Non riuscivo a far funzionare la multi-linea senza uno script jQuery, ecco come ho finito. plugin jQuery succinta – Christina

+0

@FerranNegre - Firefox e multi-line mi ha dato problemi in modo ho rinunciato e finito per usare plugin jQuery succinta – Christina

-2

Basta aggiungere al div qualche classe e dare esso display:inline;:

<div class="text"> 
    <div class="loremclass">Lorem ipsum dolor sit amet, Lorem Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem Lorem ipsum dolor sit amet</div> 
    <a href="#">More</a> 
</div> 

e

body { 
    margin: 20px; 
} 

.text{ 
    display: inline; 
    overflow: hidden; 
    text-overflow: ellipsis; 
    display: -webkit-box; 
    line-height: 24px;  /* fallback */ 
    max-height: 48px;  /* fallback */ 
    -webkit-line-clamp: 2; /* number of lines to show */ 
    -webkit-box-orient: vertical; 
} 

.text a { 
    position: absolute; 
} 
.loremclass{display:inline;} 
+0

Questo non inserisce il collegamento "Altro" in linea il testo quando il testo non è adatto a tutte e 2 le righe. –

+0

Ho aggiornato ora. Per favore prova adesso. – developppper

+0

Yea ora è come abbiamo provato prima. Il 'Più' diventa in una posizione pazza quando non è in linea con il testo (ridimensiona la finestra per vederlo). –

-1

un metodo css base di puro -webkit-line-clamp, e si può abitudine il ... più contenuti come un boss:

@-webkit-keyframes ellipsis {/*for test*/ 
 
    0% { width: 622px } 
 
    50% { width: 311px } 
 
    100% { width: 622px } 
 
} 
 
.ellipsis { 
 
    max-height: 40px;/* h*n */ 
 
    overflow: hidden; 
 
    background: #eee; 
 

 
    -webkit-animation: ellipsis ease 5s infinite;/*for test*/ 
 
    /** 
 
    overflow: visible; 
 
    /**/ 
 
} 
 
.ellipsis .content { 
 
    position: relative; 
 
    display: -webkit-box; 
 
    -webkit-box-orient: vertical; 
 
    -webkit-box-pack: center; 
 
    font-size: 50px;/* w */ 
 
    line-height: 20px;/* line-height h */ 
 
    color: transparent; 
 
    -webkit-line-clamp: 2;/* max row number n */ 
 
    vertical-align: top; 
 
} 
 
.ellipsis .text { 
 
    display: inline; 
 
    vertical-align: top; 
 
    font-size: 14px; 
 
    color: #000; 
 
} 
 
.ellipsis .overlay { 
 
    position: absolute; 
 
    top: 0; 
 
    left: 50%; 
 
    width: 100%; 
 
    height: 100%; 
 
    overflow: hidden; 
 

 
    /** 
 
    overflow: visible; 
 
    left: 0; 
 
    background: rgba(0,0,0,.5); 
 
    /**/ 
 
} 
 
.ellipsis .overlay:before { 
 
    content: ""; 
 
    display: block; 
 
    float: left; 
 
    width: 50%; 
 
    height: 100%; 
 

 
    /** 
 
    background: lightgreen; 
 
    /**/ 
 
} 
 
.ellipsis .placeholder { 
 
    float: left; 
 
    width: 50%; 
 
    height: 40px;/* h*n */ 
 

 
    /** 
 
    background: lightblue; 
 
    /**/ 
 
} 
 
.ellipsis .more { 
 
    position: relative; 
 
    top: -20px;/* -h */ 
 
    left: -50px;/* -w */ 
 
    float: left; 
 
    color: #000; 
 
    width: 50px;/* width of the .more w */ 
 
    height: 20px;/* h */ 
 
    font-size: 14px; 
 

 
    /** 
 
    top: 0; 
 
    left: 0; 
 
    background: orange; 
 
    /**/ 
 
}
<div class='ellipsis'> 
 
    <div class='content'> 
 
     <div class='text'>text text text text text text text text text text text text text text text text text text text text text </div> 
 
     <div class='overlay'> 
 
      <div class='placeholder'></div> 
 
      <div class='more'>...<a href="http://hai.li">more</a></div> 
 
     </div> 
 
    </div> 
 
</div>

+0

bello, ma funziona solo nei browser webkit. Quindi non utilizzabile per la produzione. – Teetrinker