2010-07-10 5 views
11

Bei der Verwendung von CSS-Überlauf: versteckt, habe ich oft festgestellt, dass die letzte Textzeile teilweise abgeschnitten wird. Gibt es eine Möglichkeit dies zu verhindern, so dass keine Teillinien auftauchen. Fast wie ein vertikaler Wortumbruch.CSS: Können Sie Überlauf verhindern: versteckt von der letzten Zeile des Textes abgeschnitten?

+1

ein Beispiel nennen? vielleicht mit der Zeilenhöhe des letzten Elements. –

+0

Er bedeutet, dass der Inhalt in der Mitte geschnitten ist, also die obere Hälfte der Zeichen zeigen, aber nicht die Unterseite.AFAIK gibt es keine Lösung dafür, außer mit der Zeilenhöhe zu schrauben (was sowieso keine Cross-Browser-Lösung wäre) – Rob

+0

Warum benutzen Sie Überlauf? Schwimmer enthalten? oder musst du wirklich Sachen verstecken, die überlaufen? –

Antwort

0

Rob ist korrekt. Ich machte ein div, das eine maximale Höhe von 11em hatte und die letzte Zeile des Überlauftextes war nur halb da. white-space: nowrap eliminiert nur die letzte Zeile alle zusammen.

versuchte ich

white-space: nowrap; 

und Gaby auch richtig ist, daß diese Probleme zu verursachen.

Das Beste, was ich herauskommen, war mit der line-height und div Höhe Geige, bis die wenigstenen Linien

-off geschnitten wurden
+3

das funktioniert nur, weil Ihre letzte Zeile von einem langen Zeilenumbruch erzeugt wurde. Wenn es einen
darin gab, würde es immer noch teilweise zeigen .. Sie müssen sicherstellen, dass die 'Höhe' des Div genau durch seine' line-height' geteilt werden kann. –

+0

Macht Sinn. Ich habe die Höhe des div so etwas wie 11em gemacht. Würde das einen Unterschied machen? –

2

Diese Lösung für mich gearbeitet: https://stackoverflow.com/a/17413577/2540428 im Wesentlichen einen Wrapper div mit der entsprechenden Polsterung aus und legen Sie den Inhalt in das Haupt-Div, wo Sie seine Höhe bearbeiten und den Überlauf ausblenden. Siehe Link für weitere Details.

10

Sie Wrapper div und mehrspaltigen CSS verwenden können:

.wrapper { 
    -webkit-column-width: 150px; //You can't use 100% 
    column-width: 150px; 
    height: 100%; 
} 

Lösung Beispiel:http://jsfiddle.net/4Fpq2/9/

-Update 2017-09-21

In Firefox noch diese Lösung funktioniert aber in Chrome gebrochen. Vor kurzem hat Chrome Break-Spalte von kleinen Teilen gestartet, auch brechen Pause Inhalt, wenn Sie Höhe einstellen. In diesem http://jsfiddle.net/4Fpq2/446/ Beispiel ändere ich Höhe auf maximale Höhe und zeigen seltsames Verhalten von Chrome. Wenn Sie Ideen haben, schreiben Sie bitte in Kommentare.

+0

Funktioniert für mich. :) Ich kann es aber nicht mit 'text-overflow: ellipsis' arbeiten lassen. Ist das möglich? –

+1

Bei dieser Methode gibt es keinen Überlauf. Daher wird der Text-Überlauf: Ellipsen nicht funktionieren. CSS-Regionen können vielleicht helfen, aber: http://caniuse.com/#feat=css-regionen :( – stalkerg

+0

Schade, das funktioniert nicht mit 100% :( – Swen

-1

Es gibt zwei css3-Eigenschaften. 1) Wort-Bruch & 2) Wort-arap

Vergessen Sie nicht, das sind neue Eigenschaft, die css3 ist. So dass ältere Browser solche Eigenschaften nicht unterstützen.

.class-name {word-break: break-all;} 
.class-name {word-wrap: break-word;} 
+0

[Nicht funktionierend] (http://jsfiddle.net/8takLekq/) in IE, Chrome oder Firefox. –

3

Sobald Sie verstehen, wie die column-width Arbeit, @ stalkerg Antwort sehr viel Sinn macht.

Die column-width teilt den Inhalt in Spalten, damit die letzte Zeile des Textes nicht passt, wird in die nächste Spalte verschoben. Jetzt besteht der Trick darin, die Spaltenbreite so groß wie den Container zu machen. Der Container hat einen Überlauf: versteckt, so dass die 2. Spalte nicht anzeigen soll.

.box { 
    width: 200px; 
} 
.container { 
    -webkit-column-width: 200vw; 
    -moz-column-width: 200vw; 
    column-width:   200vw; 
    height:    100%; 
} 
0

nur Spaltenbreite Attribut hinzufügen und Breite des Containers einstellen, es wird funktionieren.

0

die für mich gearbeitet:

.wrapper_container{ 
    width: 300px; 
    height: 200px; 
    overflow: hidden; 
} 

.wrapper{ 
    -webkit-column-width: 300px; 
    column-width: 300px; 
    height: 100%; 
} 
Verwandte Themen