Ich frage mich derzeit, was der Unterschied zwischen den beiden ist. Wenn ich beide verwendet habe, scheinen sie das Wort zu brechen, wenn es nicht in den Behälter passt. Aber warum hat W3C zwei Möglichkeiten gewählt?
397
Die W3-Spezifikation, die darüber spricht, scheint darauf hinzudeuten, dass word-break: break-all
ein bestimmtes Verhalten mit CJK-Text (Chinesisch, Japanisch und Koreanisch) erforderlich ist, während word-wrap: break-word
es sich um das allgemeinere, nicht CJK-fähige Verhalten handelt.
word-break
Gibt Soft-Wrap-Möglichkeiten zwischen Buchstaben an ..." Die W3C-Spezifikation verwendet CLK-Text als Beispiel , dies ist jedoch nicht die alleinige beabsichtigte Verwendung. Es ist üblich,word-break
in Verbindung mit langen Zeichenfolgen (z. B. URLs oder Codezeilen) zu verwenden, wenn diese in der Containerbreite unterbrochen werden sollen - insbesondere, wenn der Container einpre
Element oder eine Tabellenzelle ist, in der dieword-wrap
Eigenschaft möglicherweise nicht wie erwartet funktioniert .word-wrap: break-word
vor kurzem geändert zuoverflow-wrap: break-word
word-break: break-all
Wenn Sie also viele Bereiche mit fester Größe haben, in denen Inhalte dynamisch abgerufen werden
word-wrap: break-word
, bevorzugen Sie möglicherweise die Verwendung , da auf diese Weise nur die fortlaufenden Wörter dazwischen unterbrochen werden. Wenn es sich um einen Satz mit vielen Wörtern handelt, werden die Leerzeichen angepasst, um intakte Wörter zu erhalten (keine Pause innerhalb eines Wortes).Und wenn es keine Rolle spielt, machen Sie es auch.
quelle
Mit
word-break
beginnt ein sehr langes Wort an der Stelle, an der es beginnen soll, und es wird so lange gebrochen, wie es erforderlich istMit wird
word-wrap
ein sehr langes Wort jedoch NICHT an dem Punkt beginnen, an dem es beginnen sollte. Es wird in die nächste Zeile umgebrochen und dann so lange wie nötig unterbrochenquelle
break-word
. Ich fand ärgerlich, dassword-break
URLs kaputt gehen, aber nichtword-wrap
. Beide verwendenbreak-word
es von css-tricks.com/snippets/css/…word-wrap
wurdeoverflow-wrap
wahrscheinlich umbenannt , um diese Verwirrung zu vermeiden.Das haben wir jetzt:
Überlaufverpackung
Mögliche Werte:
normal : Zeigt an, dass Zeilen möglicherweise nur an normalen Wortumbruchpunkten unterbrochen werden.
Unterbrechungswort : Zeigt an, dass normalerweise unzerbrechliche Wörter an beliebigen Punkten unterbrochen werden können, wenn die Zeile keine ansonsten akzeptablen Unterbrechungspunkte enthält.
Quelle .
Wortumbruch
Quelle .
Zurück zu Ihrer Frage: Der Hauptunterschied zwischen Überlaufumbruch und Wortumbruch besteht darin, dass der erste das Verhalten in einer Überlaufsituation bestimmt , während der spätere das Verhalten in einer normalen Situation bestimmt (kein Überlauf). Eine Überlaufsituation tritt auf , wenn der Container nicht genügend Platz für den Text hat. Das Brechen von Linien in dieser Situation hilft nicht, da kein Platz vorhanden ist (stellen Sie sich eine Box mit fester Breite und Höhe vor).
Damit:
overflow-wrap: break-word
: Brechen Sie in einer Überlaufsituation die Wörter.word-break: break-all
: Unter normalen Umständen brechen Sie einfach die Wörter am Ende der Zeile. Ein Überlauf ist nicht erforderlich.quelle
overflow-wrap
Ichword-wrap
habe sie nicht einwickeln lassen. Vermutlich, weil sich Tabellenzellen ohne feste Breite anstelle eines Überlaufs ausdehnen. Stattdessen wurde der Tisch breit und kollidierte mit anderen Elementen.word-break
auf der anderen Seite behoben.table-layout: fixed;
(möglicherweise zusammen mitwidth
/max-width
) kann damit funktionierenoverflow-wrap/word-wrap
, hängt jedoch vom jeweiligen Anwendungsfall ab. genauso wieword-break
vielleicht nicht das, was du willst.Zumindest in Firefox (ab Version 24) und Chrome (ab Version 30), wenn auf Inhalte in einem
table
Element angewendet :word-wrap:break-word
führt nicht dazu, dass lange Wörter umbrochen werden, was dazu führen kann, dass die Tabelle die Grenzen ihres Containers überschreitet.
word-break:break-all
führt dazu, dass Wörter umbrochen werden und die Tabelle in den Container passt.
jsfiddle Demo .
quelle
table-layout:fixed
, um die Tabelle nicht zu erweitern, wenn Sie verwendenword-wrap:break-work
table-layout:fixed
word-wrap
in Verbindung mitpre
Tags in Firefox auf, sofern keine feste Breite definiert ist. Die Verwendungword-break
erzeugt das gewünschte Ergebnis. Ich habe diese Antwort in einem oben veröffentlichten Kommentar verlinkt, da sie einen häufigen Anwendungsfall darstellt.Das ist alles was ich herausfinden kann. Ich bin mir nicht sicher, ob es hilft, dachte aber, ich würde es der Mischung hinzufügen.
ZEILENUMBRUCH
Diese Eigenschaft gibt an, ob die aktuell gerenderte Zeile unterbrochen werden soll, wenn der Inhalt die Grenze des angegebenen Renderfelds für ein Element überschreitet (dies ähnelt in gewisser Weise den absichtlichen Eigenschaften "Clip" und "Überlauf".) Diese Eigenschaft sollte nur gelten Wenn das Element ein visuelles Rendering hat, ein Inline-Element mit expliziter Höhe / Breite ist, absolut positioniert ist und / oder ein Blockelement ist.
WORTBRUCH
Diese Eigenschaft steuert das Zeilenumbruchverhalten in Wörtern. Dies ist besonders nützlich, wenn innerhalb eines Elements mehrere Sprachen verwendet werden.
quelle
word-wrap
& gesucht habe,word-break
die beide den Wert haben könnenbreak-word
Es gibt einen großen Unterschied.
break-all
ist grundsätzlich unbrauchbar zum Rendern von lesbarem Text.Angenommen, Sie haben die Zeichenfolge
This is a text from an old magazine
in einem Container, der nur 6 Zeichen pro Zeile enthält.word-break: break-all
Wie Sie sehen können, ist das Ergebnis schrecklich.
break-all
wird versuchen, so viele Zeichen wie möglich in jede Zeile zu passen, es wird sogar ein 2-Buchstaben-Wort wie "ist" in 2 Zeilen aufgeteilt! Es ist lächerlich. Deshalbbreak-all
wird es selten verwendet.word-wrap: break-word
break-word
bricht nur Wörter, die zu lang sind, um jemals in den Container zu passen (wie "Magazin", das aus 8 Zeichen besteht, und der Container passt nur aus 6 Zeichen). Es werden niemals Wörter gebrochen, die vollständig in den Container passen könnten, sondern sie werden in eine neue Zeile verschoben.quelle
word-break:break-all
::Wort, um weiter zu begrenzen, dann in Newline einbrechen.
word-wrap:break-word
::Zuerst wird der Zeilenumbruch in die neue Zeile eingefügt, dann wird der Rand fortgesetzt.
Beispiel:
quelle
Aus den jeweiligen W3-Spezifikationen , die aufgrund fehlenden Kontexts ziemlich unklar sind, kann man Folgendes ableiten:
word-break: break-all
dient zum Aufbrechen von Fremdwörtern, die nicht von CJK stammen (sagen wir westlich), in CJK-Schriftschriften (Chinesisch, Japanisch oder Koreanisch).word-wrap: break-word
ist für das Brechen von Wörtern in einer nicht gemischten (sagen wir nur westlichen) Sprache.Zumindest waren dies die Absichten von W3. Was tatsächlich geschah, war ein großes Problem mit Browser-Inkompatibilitäten. Hier finden Sie eine hervorragende Beschreibung der verschiedenen Probleme .
Das folgende Codefragment kann als Zusammenfassung des Erreichens von Wörtern mit CSS in einer browserübergreifenden Umgebung dienen:
quelle
Zusätzlich zu den vorherigen Kommentaren
word-wrap
scheint die Browserunterstützung für etwas besser zu sein als fürword-break
.quelle