992 Stimmen

Wie bringe ich Text in einem Pre-Tag unter?

pre Tags sind sehr nützlich für Codeblöcke in HTML und zum Debuggen von Ausgaben beim Schreiben von Skripten, aber wie bringe ich den Text dazu, umzubrechen, anstatt eine lange Zeile auszudrucken?

1350voto

adambox Punkte 22141

Die Antwort, von diese Seite in CSS:

pre {
    white-space: pre-wrap;       /* Since CSS 2.1 */
    white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
    white-space: -pre-wrap;      /* Opera 4-6 */
    white-space: -o-pre-wrap;    /* Opera 7 */
    word-wrap: break-word;       /* Internet Explorer 5.5+ */
}

26 Stimmen

white-space:pre-line; (und alle Browser-kompatiblen Varianten) scheint in einigen Fällen (z. B. ohne Tabulatoren) angemessener zu sein, da es das Leerzeichen am Anfang der Zeile (falls vorhanden) wegnimmt

7 Stimmen

@MediaVince, pre-line kollabiert alle Leerzeichen (nicht nur am Anfang der Zeile). developer.mozilla.org/de-US/docs/Web/CSS/white-space enthält eine Tabelle mit einer Zusammenfassung des Verhaltens von white-space Werte.

2 Stimmen

word-wrap: break-word tut nicht das, wonach die Frage verlangt, sondern bewirkt einen Zeilenumbruch auch zwischen den Wörtern. Sie können diese Zeile löschen. Bei modernen Browsern brauchen Sie keine der -moz oder andere Präfixe.

257voto

Richard McKechnie Punkte 2348

Dies eignet sich hervorragend, um Text zu umbrechen und den Leerraum innerhalb der pre -Tag:

pre {
    white-space: pre-wrap;
}

3 Stimmen

Das liegt daran, dass es nur CSS 3 ist - siehe die réponse von adambox für mehr Kompatibilität.

2 Stimmen

Erwägen Sie stattdessen die Verwendung eines automatisierten Tools zum Hinzufügen von herstellerspezifischen Präfixen, z. B. Autoprefixer .

1 Stimmen

@loremmonkey Heutzutage unterstützen alle Browser CSS 3, so dass es keine Notwendigkeit für mehr Kompatibilität gibt.

97voto

Mason240 Punkte 2390

Ich habe festgestellt, dass das Überspringen des pre-Tags und die Verwendung von white-space: pre-wrap auf einem div eine bessere Lösung ist.

 <div style="white-space: pre-wrap;">content</div>

6 Stimmen

Einfacher als die gängige Antwort. Danke!

10 Stimmen

In meinem Fall wollte ich einen vorformatierten Text anzeigen, der Tabulatoren enthielt, um eine Tabelle zu erstellen. Ich habe Ihre Lösung verwendet und eine Monspace-Schriftart hinzugefügt, damit alle Spalten ausgerichtet sind: style="white-space: pre-wrap; font-family:monospace;"

2 Stimmen

Dies mag zwar einfacher sein, aber es könnte mehr semantischen Wert haben, wenn man <pre> für Codeblöcke.

71voto

Erin Delacroix Punkte 663

Kurz gesagt, zwingt dies dazu, den Inhalt innerhalb einer pre Tag ohne Wortbruch.

pre {
    white-space: pre-wrap;
    word-break: keep-all
}

0 Stimmen

Dies funktioniert nicht auf ios safari als von aktuell. Lange Zeilen lassen den Pre wachsen und führen zum Überlaufen des Containers. Hinzufügen von word-wrap: break-word; behebt das Problem.

23voto

vovahost Punkte 29502

Ich habe die Antworten von @richelectron und @user1433454 kombiniert.
Es funktioniert sehr gut und die Textformatierung bleibt erhalten.

<pre  style="white-space: pre-wrap; word-break: keep-all;">

</pre>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X