В настоящее время мне интересно, в чем разница между ними. Когда я использовал оба, они словно ломают слово, если оно не подходит к контейнеру. Но почему W3C сделал два способа сделать это?
397
Спецификация W3, в которой говорится об этом, как представляется, предполагает, что word-break: break-all
она требует особого поведения с текстом CJK (китайский, японский и корейский), в то word-wrap: break-word
время как это более общее поведение, не поддерживающее CJK.
word-break
определяет возможности мягкого переноса между буквами…» Спецификация W3C использует текст CLK в качестве примера , но это не единственное предназначение. Обычно используетсяword-break
вместе с длинными строками (такими как URL или строки кода), когда вы хотите, чтобы они ломались при ширине контейнера - особенно если контейнер являетсяpre
элементом или ячейкой таблицы, гдеword-wrap
свойство может работать не так, как ожидалось .word-wrap: break-word
недавно изменился наoverflow-wrap: break-word
word-break: break-all
Поэтому, если у вас есть много диапазонов фиксированного размера, которые получают содержимое динамически, вы можете просто предпочесть использовать
word-wrap: break-word
, так как таким образом только непрерывные слова разбиваются между ними, и в случае, если это предложение содержит много слов, пробелы корректируются для получения неповрежденных слов (без перерыва в слове).И если это не имеет значения, иди либо.
источник
При
word-break
этом очень длинное слово начинается с того места, с которого оно должно начинаться, и оно прерывается столько, сколько требуетсяОднако
word-wrap
очень длинное слово НЕ БУДЕТ начинаться с того места, с которого оно должно начинаться. он переносится на следующую строку, а затем прерывается столько, сколько требуетсяисточник
break-word
. Я досадно обнаружил, чтоword-break
нарушает URL, но нетword-wrap
. Оба, использующие,break-word
получили это от css-tricks.com/snippets/css/…word-wrap
был переименован,overflow-wrap
вероятно, чтобы избежать этой путаницы.Теперь вот что мы имеем:
Переполнение-обертка
Возможные значения:
normal : указывает, что строки могут разрываться только в обычных точках разрыва слова.
слово-разрыв . Указывает, что обычно неразрывные слова могут быть разбиты в произвольных точках, если в строке нет других приемлемых точек разрыва.
источник .
слово-брейк
источник .
Теперь вернемся к вашему вопросу. Основное различие между overflow-wrap и word-break заключается в том, что первое определяет поведение в ситуации переполнения , а второе определяет поведение в нормальной ситуации (без переполнения). Переполнение ситуация происходит , когда контейнер не имеет достаточно места для хранения текста. Разрывание линий в этой ситуации не помогает, потому что там нет места (представьте прямоугольник с фиксированной шириной и высотой).
Так:
overflow-wrap: break-word
: В ситуации переполнения разбить слова.word-break: break-all
В обычной ситуации просто разбить слова в конце строки. Переполнение не обязательно.источник
overflow-wrap
/word-wrap
не заставил их обернуть. Предположительно, потому что ячейки таблицы без фиксированной ширины расширяются вместо переполнения. Вместо этого стол расширился и столкнулся с другими элементами.word-break
с другой стороны исправили это.table-layout: fixed;
(возможно, вместе сwidth
/max-width
) может заставить его работать,overflow-wrap/word-wrap
но это зависит от конкретного варианта использования; простоword-break
может быть не то, что вы хотите.По крайней мере, в Firefox (начиная с версии v24) и Chrome (начиная с версии v30), применительно к содержимому
table
элемента:word-wrap:break-word
фактически не приведет к переносу длинных слов, что может привести к тому, что таблица превысит границы своего контейнера;
word-break:break-all
приведет к переносу слов и подгонке таблицы внутри контейнера.
jsfiddle demo .
источник
table-layout:fixed
чтобы таблица не расширялась при использованииword-wrap:break-work
table-layout:fixed
word-wrap
вместе сpre
тегами в Firefox, если для них не определена фиксированная ширина. Использованиеword-break
дает желаемый результат. Я связался с этим ответом в комментарии, опубликованном выше, потому что он демонстрирует общий случай использования.Это все, что я могу узнать. Не уверен, что это поможет, но думал, что я добавлю это в микс.
ПЕРЕНОС СЛОВА
Это свойство указывает, должна ли текущая отображаемая строка прерываться, если содержимое превышает границу указанного поля рендеринга для элемента (в некоторых отношениях это похоже на свойства clip и overflow). Это свойство должно применяться только если элемент имеет визуальную визуализацию, является встроенным элементом с явной высотой / шириной, абсолютно позиционирован и / или является блочным элементом.
WORD-BREAK
Это свойство управляет поведением разрыва строки в словах. Это особенно полезно в тех случаях, когда в элементе используется несколько языков.
источник
word-wrap
&,word-break
которая может иметь значениеbreak-word
Там огромная разница.
break-all
в основном непригоден для рендеринга читаемого текста.Допустим, у вас есть строка
This is a text from an old magazine
в контейнере, которая вмещает только 6 символов в строке.word-break: break-all
Как видите, результат ужасен.
break-all
постарается разместить как можно больше символов в каждом ряду, он даже разделит двухбуквенное слово типа «есть» на 2 ряда! Это нелепо. Вот почемуbreak-all
редко используется.word-wrap: break-word
break-word
будет разбивать только те слова, которые слишком длинные, чтобы вместить контейнер (например, «журнал», который составляет 8 символов, а контейнер вмещает только 6 символов). Он никогда не нарушит слова, которые могут полностью вместить контейнер, вместо этого он выведет их на новую строку.источник
word-break:break-all
:слово, чтобы продолжить границу, а затем перевести на новую строку.
word-wrap:break-word
:Сначала перенос слов в новой строке, затем переход к границе.
Пример :
источник
Из соответствующих спецификаций W3, которые оказываются довольно неясными из-за отсутствия контекста, можно сделать следующее:
word-break: break-all
предназначен для разделения иностранных, не-CJK (скажем, западных) слов в символьных текстах CJK (китайский, японский или корейский).word-wrap: break-word
для разрыва слов в несмешанном (скажем, исключительно западном) языке.По крайней мере, это были намерения W3. В результате произошло серьезное сближение с несовместимостью браузеров. Вот отличное описание различных проблем .
Следующий фрагмент кода может служить кратким описанием того, как добиться переноса слов с помощью CSS в кросс-браузерной среде:
источник
В дополнение к предыдущим комментариям поддержка браузера
word-wrap
кажется немного лучше, чем дляword-break
.источник