Різниця між переповненням і перериванням слів?


87

Яка точна різниця між overflow-wrap/ word-wrapта word-break? І хтось може сказати мені, що краще для розриву дуже довгих посилань? Більшість людей кажуть, що слід використовувати розрив слів у поєднанні з, overflow-wrapале це виглядає не дуже логічно. Я думаю, що використання overflow-wrapв поєднанні з word-wrapдля кращої підтримки між браузерами є найкращим методом. Як ти гадаєш?


6
Будь-яким майбутнім читачам, які спочатку могли б заплутатися, чому це було закрито як повторне запитання. CSS Text Module Level 3 говорить , що overflow-wrapі word-wrapповинно бути 100% ідентичні по функціональності. Особисто у мене word-wrapскладається враження, що його слід використовувати лише для підтримки застарілих браузерів і що він може бути застарілим або вилученим у майбутній версії CSS.
Тайлер Кромптон,

23
Для тих, хто проголосував за закриття цього: це не дублікат, як зазначено, питання не те саме. Заявлений дублікат стосується двох конкретних значень двох властивостей, і це питання стосується двох властивостей. Мені дуже не подобається, що одні люди вважають, що мають право забороняти іншим відповідати на питання. Якщо вам не подобається питання, просто не читайте його!
Hibou57,

3
@Tyler Crompton Ви плутаєте word-wrapзword-break
катамфетаміном

1
Я згоден з Hibou57. Це не дублікат. На жаль, він закритий, оскільки важко знайти відповідь на це питання в Інтернеті.
Paul-Hebert

@TylerCrompton Це питання не стосується word-wrap. Це приблизно word-break. Закривати це як повторне запитання не має сенсу.
Самотній учень

Відповіді:


67

Цитування з джерела

  • word-wrap: Властивість CSS-word-wrap використовується, щоб вказати, чи може браузер розбивати рядки у словах, щоб запобігти переповненню, коли нерушимий в іншому випадку рядок занадто довгий, щоб вміститися у його вміщує поле.

  • overflow-wrap : word-wrapвластивість перейменована overflow-wrapв поточному проекті специфікації тексту CSS3

  • word-break: Властивість CSS-break-word використовується, щоб вказати, як (або якщо) розбивати рядки всередині слів

Отже, вам потрібен розрив слів у поєднанні із переходом слів, що є правильною комбінацією.


Ну, так word-wrap, достатньо, але якщо ширина контейнера обмежена, макет може бути зіпсованим.
karthikr

Добре, я бачу. Я використовую перенесення слів лише для посилань, тому макет не порушується.
Ансельм

7
Знайшов відповідь: "Специфікація W3, в якій йдеться про них, мабуть, припускає, що word-break: break-all призначений для того, щоб вимагати певної поведінки з текстом CJK, тоді як word-wrap: break-word є більш загальним, не CJK- усвідомлена, поведінка ". ( stackoverflow.com/questions/1795109/… ) CJK - це спільний термін для китайської, японської та корейської мов.
Ансельм

О але я думав, що ваше питання було зовсім іншим. У будь-якому разі, радий, що ви знайшли свої відповіді, і я сподіваюся, я трохи вам
допоміг

4
word-wrap є застарілим розширенням Microsoft (навіть якщо воно було реалізовано як нефіксована властивість більшістю браузерів) і тепер замінено переповненням. MDN об’єднав дві різні сторінки в одну: developer.mozilla.org/en-US/docs/Web/CSS/overflow-wrap
CharlesM

8

Це допомагає зрозуміти, що на даний момент word-break: break-wordце справді псевдонім overflow-wrap: anywhere.

word-break: break-wordофіційно застарілий; див. робочий проект текстового модуля CSS рівня 3 :

Для сумісності із застарілим вмістом word-breakвластивість також підтримує застаріле break-wordключове слово. Якщо вказано, це має такий самий ефект, як word-break: normalі overflow-wrap: anywhere, незалежно від фактичного значення властивості overflow-wrap.

Тут слід зазначити, що word-break: break-wordце псевдонім для overflow-wrap: anywhere, а не псевдонім для overflow-wrap: break-word.

( word-break: normalце лише значення за замовчуванням для word-break, тому ви можете ігнорувати його, якщо не встановите інше значення для word-break.)

Як відрізняються overflow-wrap: anywhereі overflow-wrap: break-wordвідрізняються?

Єдина відмінність у документації між ними полягає в тому, що overflow-wrap: anywhereНЕ "розглядає можливості м’якого обгортання, введені словом break", коли воно "обчислює внутрішні розміри мінімального вмісту", тоді як overflow-wrap: break-wordНЕ.

Я думаю, ширина може бути точнішою в деяких випадках, якщо вона враховує їх?


7

Ось точні відмінності: (на основі тестування в Chrome v81 та підтвердження моїх спостережень посиланням на специфікацію)

пробіл

normal(за замовчуванням): згортає пробіли та ланцюжки; додає розриви рядків, де це потрібно
nowrap: згортає пробіли та розриви рядків; не додає розривів рядків
pre-line: згортає пробіли; додає розриви рядків, де це потрібно
pre-wrap: відсутність згортання; додає розриви рядків там, де це потрібно
break-spaces: те саме, що і попереднє обтікання, за винятком пробілів, здатних викликати додавання розривів рядків
pre: відсутність згортання; не додає розривів рядків

Примітка: Якщо у вибраних white-spaceсписках значень "не додаються розриви рядків", поведінку розриву рядків наступних властивостей застосувати неможливо (тобто ігнорувати).

перерва слів

normal(за замовчуванням): розриває рядок у кінці приміщення останнього слова в контейнері [якщо такий існує], інакше рядок залишається непорушеним
break-word: розриває рядок в кінці останнього відповідного слова в контейнері [якщо такий існує], інакше в кінці контейнера
break-all: розриває рядок у кінець контейнера [може розділити слово, навіть із сусіднім пробілом]

overflow-wrap (застаріла назва: word-wrap)

normal(за замовчуванням): розриває рядок у кінці приміщення останнього слова в контейнері [якщо такий існує], інакше рядок залишається непорушеним
break-word: розриває рядок у кінці останнього слова, що поміщається всередині контейнера [якщо такий існує], інакше в кінці контейнера [якщо не в -flex контейнер], інакше рядок залишається непорушним
anywhere: розриває рядок в кінці останнього слова, що поміщається всередині контейнера [якщо такий існує], інакше в кінці контейнера [так само, як word-break: break-word]

Зверніть увагу, що для overflow-wrap: break-word(як і для будь-якої комбінації, яка залишає рядки занадто довгими для контейнера), неперервана лінія може спричинити розширення гнучкого контейнера за межі вказаного коефіцієнта гнучкості (змушуючи інші гнучкі контейнери стискатися, враховуючи занадто довгий вміст).


виходячи з того, що ви сказали "на основі документів", я припускаю, що цей вміст здебільшого скопійований? ТАК, як правило, нарізає на вміст, який є просто чистою копією вмісту в іншому місці, але в будь-якому випадку ви повинні цитувати джерела під час копіювання вмісту, щоб уникнути плагіату. Крім того, тестування в Chrome навряд чи надійне як джерело для того, щоб відповідати чимось, як говорить специфікація.
TylerH

1
@TylerH Це не є (навіть близько до) чистою копією вмісту в іншому місці. Більшість описів поведінки було зроблено з мого безпосереднього тестування в Chrome, з посиланням на сторінки документів, лише щоб підтвердити, що поведінка, яку я спостерігав, відповідала специфікації, і щоб переконатися, що я не пропускав додаткової поведінки. Далекий крик від плагіату. (Я
оновлю

Для справжнього серйозного і терплячого читача, який справді хоче все зрозуміти, це найкраща відповідь. Дуже дякую.
ZYinMD
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.