Ist es möglich, die letzte Zeile eines Textes mit einer festen Breite dynamisch zu erhalten?

8

Dies ist ein Beispiel :

%Vor%

Dieses div ist 200px breit, und ich muss die letzte Zeile, die ich im Browser sehen kann, abfangen und sie mit einem Span umwickeln. Wie <span>it over 2000 years old.</span> in meinem Fall.

Ist das mit jquery / javascript möglich? Oder zumindest die Länge dieser "letzten" Zeile.

EDIT: Ich denke, ich finde einen guten Weg: Ссылка

    
markzzz 09.05.2016, 15:44
quelle

4 Antworten

3

Das funktioniert. Geht Wort für Wort durch Berechnen der Breite

Ссылка

%Vor%     
Steven Kaspar 09.05.2016, 16:40
quelle
4

Dies ist wahrscheinlich ein bisschen mehr Hardcore, als Sie gehofft haben, aber Sie könnten die Höhe des Elternteils überprüfen und anfangen, Wort für Wort zu entfernen, indem Sie jede Iteration überprüfen, bis sich die Höhe ändert. Dann wissen Sie, an welchem ​​Wort oder Symbol die letzte Zeile beginnt.

%Vor%

Ich gehe davon aus, dass Sie das tun, um den Text irgendwie zu stylen, derzeit gibt es einen Pseudo-Selektor namens first-line , der auf die erste Textzeile des Selektors abzielt, was wir jedoch noch nicht gesehen haben ein last-line oder nth-line(#) Selektoren, was eine Schande ist, wie es scheint, eine ziemlich vernünftige Sache zu haben.

    
GMchris 09.05.2016 16:16
quelle
3

Sie können document.caretPositionFromPoint dafür verwenden, wenn Sie die Zeilenhöhe des Textes im Container kennen oder annähern können. Hier ist eine Beispielgeige: Ссылка

Die Funktion erlaubt uns im Grunde, die Offset-Position von Text für jedes Element an den gegebenen Koordinaten zu erfassen, und dann verwenden wir ein einfaches String-Slicing für die Eigenschaft textContent des Elements. Wir verwenden dies, um die Position des Punktes zu erhalten, der nur vor den benötigten Text enthält und den Offset erhält.

Diese Lösung ist auch recht freundlich zur DOM-Performance, da wir keine neuen Elemente einfügen oder die bereits existierenden Elemente mutieren.

Ich hoffe, das hilft.

Bearbeiten: Sie haben gerade gesehen, dass Sie die letzte Zeile in einem Bereich umbrechen möchten. Dies können Sie folgendermaßen tun: Ссылка

Es teilt den Textknoten auf und ersetzt den Ersatz durch ein umgebrochenes Element.

Hier ist der Code:

%Vor%     
Awal Garg 09.05.2016 17:09
quelle
0

Zu diesem Zweck müssen Sie alle Arbeiten in Text mit Javascript split Methode erhalten. Fügen Sie dann jedes Wort zum Element hinzu und rufen Sie das Element height ab. Wenn die Elementhöhe die erste Höhe des Elements erreicht, bedeutet dies, dass dieses Wort in der letzten Zeile steht. Siehe mein Beispiel

%Vor% %Vor% %Vor%

Wenn Sie diese Arbeit mit reinem JavaScript durchführen möchten, sehen Sie jsfiddle

    
Mohammad 10.05.2016 10:39
quelle

Tags und Links