2014-09-23 14 views
6

So habe ich die folgende Fiddle, die eine Ellipse in einem Text in zwei Zeilen gesetzt hat. Dann möchte ich einen 'Mehr' Link inline mit dem Text haben.CSS Text Ellipsen einschließlich "Mehr" Link

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

Also, wenn unser Text mehr als zwei Zeilen hat, sollte es so aussehen:

enter image description here

Das ist richtig. Allerdings:

enter image description here

, die nicht korrekt ist (sollte inline mit dem Text sein).

-Code ist wie folgt:

<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> 

Und die 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; 
} 

Ich denke, muss ... Vielen Dank im Voraus einfach sein.

+0

Kannst du nicht 'a' in das' div' setzen? –

+0

'wenn unser Text mehr als zwei Zeilen hat = = klingt wie Javascript. Und Sie brauchen Ereignisse für, wenn der Benutzer die Größe des Fensters ändert (um korrektes Verhalten zu behalten) –

+0

Diese Ellipseneigenschaft kümmert sich um die 2 Zeilen ... Wenn ich das a innerhalb der div schreibe ... http://jsfiddle.net/ csYjC/2879/Es ist in Ordnung, wenn das "More" in der gleichen Zeile ist, aber wenn nicht, ist es nicht. –

Antwort

0

Das div innerhalb von .text wird immer noch als Blockelement angezeigt. Verwenden Sie dieses Problem zu beheben:

.text > div { display: inline; } 

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

+0

Hi, das bringt das "More" richtig mit dem Text in Einklang.Aber beachten Sie, dass wenn Sie die Fenstergröße ändern, das More nicht am richtigen Platz ist (wird ein wenig verrückt). Außerdem habe ich gerade festgestellt, dass in Ellipsen die Ellipse nicht funktioniert. –

+0

@FerranNegre Wechseln Sie in '.text eine {position: relative;}' http://jsfiddle.net/hegsgwrv/ – OJFord

+0

Hallo. Ich habe das versucht. Funktioniert immer noch nicht. Jetzt ist immer inline mit dem Text (wenn ich es will, wenn zwei Zeilen abgeschlossen sind). Wenn Sie die Größe stark ändern, werden Sie feststellen, dass der Link "Mehr" nicht mehr angezeigt wird. Und immer noch keine Ellipse mit Firefox ... das könnte eine andere Sache sein. –

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

Das sieht gut aus. Ist es auch möglich, den "Mehr" -Knopf unter den Text zu stellen, wenn der Text bereits auf die ganze Zeile passt? Außerdem benutzt du nur 1 Zeile, ich versuche es mit 2 Zeilen. –

+0

Ich konnte Multi-Line nicht ohne ein jQuery-Skript arbeiten, das habe ich am Ende benutzt. jQuery Plugin Prägnante – Christina

+0

@FerranNegre - Firefox und mehrzeiligen gab mir gibt so gab ich auf und beendet jQuery Prägnante Plugin up – Christina

-2

nur in den etwas Klasse div und geben es 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> 

und

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

Das setzt den Link "Mehr" nicht in den Text, wenn der Text nicht alle 2 Zeilen enthält. –

+0

Ich habe jetzt aktualisiert. Bitte versuchen Sie es jetzt. – developppper

+0

Ja ist jetzt wie wir es schon einmal versucht haben. Das "Mehr" wird in eine verrückte Position gebracht, wenn es nicht mit dem Text übereinstimmt (Größe des Fensters ändern, um es zu sehen). –

-1

ein reines CSS-Verfahren basieren auf -webkit-line-Klemme, und Sie kann Gewohnheit der ... mehr Inhalt wie ein Chef:

@-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

schön, aber funktioniert nur in Webkit-Browsern. Also nicht für die Produktion nutzbar. – Teetrinker