mit
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
"..." wird am Ende der Zeile angezeigt, wenn es übergelaufen ist. Dies wird jedoch nur in einer Zeile angezeigt. Aber ich möchte, dass es mehrzeilig angezeigt wird.
Es kann aussehen wie:
+--------------------+
|abcde feg hij dkjd|
|dsji jdia js ajid s|
|jdis ajid dheu d ...|/*Here it's overflowed, so "..." is shown. */
+--------------------+
Antworten:
Es gibt auch mehrere JQuery-Plugins, die sich mit diesem Problem befassen, aber viele verarbeiten nicht mehrere Textzeilen. Folgende Arbeiten:
Es gibt auch einige Tests preformance .
quelle
Ich habe herumgehackt, bis ich es geschafft habe, etwas in der Nähe davon zu erreichen. Es kommt mit ein paar Einschränkungen:
Ich sollte auch beachten, dass der Text an einer Wortgrenze und nicht an einer Zeichengrenze unterbrochen wird. Dies war absichtlich (da ich das für längere Texte für besser halte), aber weil es sich von dem unterscheidet, was es
text-overflow: ellipsis
tut, dachte ich, ich sollte es erwähnen.Wenn Sie mit diesen Einschränkungen leben können, sieht der HTML-Code folgendermaßen aus:
Dies ist das entsprechende CSS am Beispiel eines 150 Pixel breiten Felds mit drei Textzeilen auf weißem Hintergrund. Es wird davon ausgegangen, dass Sie einen CSS-Reset oder ähnliches haben, bei dem Ränder und Auffüllungen bei Bedarf auf Null gesetzt werden.
Das Ergebnis sieht folgendermaßen aus:
Um zu verdeutlichen, wie es funktioniert, sehen Sie hier dasselbe Bild, außer dass
.hidedots1
es rot hervorgehoben ist, und.hidedots2
Cyan hervorgehoben ist. Dies sind die Rechtecke, die die Auslassungspunkte verbergen, wenn kein unsichtbarer Text vorhanden ist:Getestet in IE9, IE8 (emuliert), Chrome, Firefox, Safari und Opera. Funktioniert nicht in IE7.
quelle
your text
wird , mit umwickelten<p>
Tags (wie sie sein sollten), dann können Sie verwenden ,.ellipsify p:before
und.ellipsify p:after
dann brauchen Sie natürlich.ellipsify p:before{content:"\2026";}
die\2026
der Code für das Auslassungszeichen ist, kann auch müssen ,content:" ";
da sie möglicherweise nicht für die leeren Elemente.+1
tue.Hier ist ein kürzlich veröffentlichter Artikel über CSS-Tricks, in dem dies erläutert wird.
Einige der Lösungen im obigen Artikel (die hier nicht erwähnt werden) sind
1)
-webkit-line-clamp
und 2) Platzieren Sie ein absolut positioniertes Element mit Ausblenden unten rechtsBeide Methoden setzen das folgende Markup voraus:
mit css
1) -Webkit-Line-Clamp
Line-Clamp FIDDLE (..für maximal 3 Zeilen)
2) Ausblenden
FIDDLE ausblenden
Lösung 3 - Eine Kombination mit @supports
Wir können @supports verwenden, um die Zeilenklemme des Webkits auf Webkit-Browser anzuwenden und das Ausblenden in anderen Browsern anzuwenden.
@ unterstützt Line-Clamp mit Fade-Fallback-Geige
CSS
quelle
Der folgende Link bietet eine reine HTML / CSS-Lösung für dieses Problem.
Browserunterstützung - wie im Artikel angegeben:
http://www.mobify.com/dev/multiline-ellipsis-in-pure-css
das css:
das HTML:
das Geige
(Ändern Sie die Größe des Browserfensters zum Testen)
quelle
Chrome for Mac Version 48.0.2564.116
Nachdem ich die W3-Spezifikation auf Textüberlauf überprüft habe , denke ich nicht, dass dies nur mit CSS möglich ist. Ellipsis ist eine neue Eigenschaft, daher hat sie wahrscheinlich noch nicht viel Nutzung oder Feedback erhalten.
Dieser Typ scheint jedoch eine ähnliche (oder identische) Frage gestellt zu haben, und jemand konnte eine nette jQuery-Lösung finden. Sie können die Lösung hier vorführen: vorführen http://jsfiddle.net/MPkSF/
Wenn Javascript keine Option ist, haben Sie möglicherweise kein Glück ...
quelle
Ich möchte diese Frage nur der Vollständigkeit halber ergänzen.
quelle
-o-ellipsis-lastline
haben entfernt , wenn Opera auf WebKit geschaltet. Kugel für historische Zwecke verlassen.Tolle Frage ... Ich wünschte, es gäbe eine Antwort, aber dies ist die beste, die Sie heutzutage mit CSS erreichen können. Keine Auslassungspunkte, aber immer noch ziemlich brauchbar.
quelle
Ich habe diese CSS (SCS) -Lösung gefunden, die recht gut funktioniert. In Webkit-Browsern werden die Auslassungspunkte angezeigt und in anderen Browsern wird nur der Text abgeschnitten. Welches ist in Ordnung für meinen Verwendungszweck.
Ein Beispiel des Erstellers: http://codepen.io/martinwolf/pen/qlFdp
quelle
-webkit-line-clamp
Browser-Unterstützung caniuse.com/#search=-webkit-line-clampHier ist die nächste Lösung, die ich mit CSS bekommen könnte.
HTML
CSS
Working Fiddle ( Größe des Fensters ändern, um zu überprüfen )
Link zu meinem Blog zur Erklärung
Geige aktualisiert
Ich hoffe, jetzt hätte ein CSS-Experte eine Idee, wie man es perfekt macht. :) :)
quelle
div::before
stattdessen verwendenspan
? :)Hier gibt es viele Antworten, aber ich brauchte eine, die war:
Die Einschränkung ist, dass es keine Auslassungspunkte für die Browser bietet, die die
-webkit-line-clamp
Regel nicht unterstützen (derzeit IE, Edge, Firefox), aber einen Verlauf verwendet, um ihren Text auszublenden.Sie können es in diesem CodePen in Aktion sehen und Sie können hier auch eine Javascript-Version sehen (keine jQuery).
quelle
Etwas spät zu dieser Party, aber ich habe mir eine einzigartige Lösung ausgedacht. Anstatt zu versuchen, Ihre eigenen Auslassungspunkte durch CSS-Tricks oder JS einzufügen, dachte ich, ich würde versuchen, mit der Einschränkung nur für eine einzelne Zeile zu rollen. Also dupliziere ich den Text für jede "Zeile" und verwende einfach einen negativen Texteinzug, um sicherzustellen, dass eine Zeile dort beginnt, wo die letzte aufhört. GEIGE
CSS:
HTML:
Weitere Details in der Geige. Es gibt ein Problem mit dem fließenden Browser, für das ich ein JS-Redraw verwende. Überprüfen Sie es also, aber dies ist das Grundkonzept. Alle Gedanken / Vorschläge werden sehr geschätzt.
quelle
danke @balpha und @Kevin, ich kombiniere zwei Methoden miteinander.
Bei dieser Methode werden keine js benötigt.
Sie können verwenden
background-image
und es ist kein Farbverlauf erforderlich, um Punkte auszublenden.das
innerHTML
von.ellipsis-placeholder
ist nicht notwendig, ich benutze.ellipsis-placeholder
um die gleiche Breite und Höhe mit zu halten.ellipsis-more
. Sie könntendisplay: inline-block
stattdessen verwenden.jsfiddler
quelle
Javascript-Lösung wird besser sein
is-ellipsis
Klasse , wenn die Größe des Fensters oder elment ÄnderunggetRowRects
Element.getClientRects()
funktioniert sojeweils Rects in der gleichen Zeile das gleiche hat
top
Wert, findet so den Rects mit unterschiedlichem outemtop
Wert, wie diesschweben
...more
wie diese
Fenstergröße ändern oder Element geändert
wie diese
quelle
Weitere Informationen finden Sie hier
quelle
Eine reine CSS-Methode, die auf -webkit-line-clamp basiert:
quelle
Ich habe einen Javascript-Trick gefunden, aber Sie müssen die Länge der Zeichenfolge verwenden. Nehmen wir an, Sie möchten 3 Zeilen mit einer Breite von 250 Pixel. Sie können die Länge pro Zeile berechnen, dh
quelle