Использование слова-разрыва: разрыв-слова; в фаерфоксе

У меня есть элемент div, который я использую для абзацев текста. Он предназначен для мобильных устройств, поэтому я тестировал его с разными размерами браузера/окна просмотра. У меня есть следующий код:

.text {
  font-size: 18px;
  word-break: break-word;
  overflow-wrap: break-word;
  width: 200px;
  border: red solid 1px;
}
<p class="text">Wordthatislongenoughtogetalineonitsown andawordthatfits fits</p>

Когда размер окна изменяется, в Chrome он выглядит нормально, w переходит на новую строку, а затем ломается. Однако в Firefox слова вообще не разрываются, а элемент div расширяется и включает весь текст, создавая полосу прокрутки внизу страницы.

Как я могу сделать так, чтобы слово ломалось в Firefox? Я пытался добавить white-space: pre-wrap;, но все, что он делает, это добавляет уродливые разрывы строк и даже не вызывает разрыв слова. Я не хочу использовать word-break: break-all;, потому что это разобьет каждое слово, и я хочу разбить только слова переполнения. overflow-wrap: break-word; тоже ничего не делал.

РЕДАКТИРОВАТЬ: я пытаюсь заставить его выглядеть так, и вот как это выглядит в Chrome: Chrome Success

Вот как это выглядит в Firefox (не то, что мне нужно): Ошибка Firefox

Вот как это выглядит с break-all, чего я тоже не хочу. Обратите внимание, как разрываются слова, когда они могут перейти на следующую строку: break-all


person WhyIsItReal    schedule 11.11.2017    source источник
comment
для FF используйте word-break: break-all;   -  person G-Cyrillus    schedule 12.11.2017
comment
word-break: break-all; имеет другую функциональность, все слова разбиты   -  person WhyIsItReal    schedule 13.11.2017
comment
На самом деле, break-word — это значение переноса слов, которое было реализовано в старом IE (5.5-›7), здесь вы можете ошибиться в обоих правилах: developer.mozilla.org/en-US/docs/Web/CSS/word-break и msdn.microsoft.com/en-us//library/ который вернулся в черновик как developer.mozilla.org/en -US/docs/Web/CSS/overflow-wrap Лучше всего проверить, какие из них можно применить к правилу, которое вы хотите использовать, а затем выбрать те, которые работают должным образом;)   -  person G-Cyrillus    schedule 13.11.2017
comment
Я пробовал overflow-wrap: break-word;, но ничего не происходит, и то же самое касается word-wrap: break-word;. Моя цель состоит в том, чтобы разбить слово тогда и только тогда, когда оно само по себе не помещается в строку. Реализация Chrome, на которую я ссылался выше, — это именно то, что я ищу. Я понимаю, что break-word нестандартен для браузеров WebKit, но я ищу другой способ получить тот же эффект.   -  person WhyIsItReal    schedule 13.11.2017
comment
Хорошо, я сделал фрагмент ваших первоначальных кодов, которыми вы поделились, возможно, вы также можете добавить свои несколько попыток, чтобы их можно было повторно использовать в ответе и показать вживую, что происходит в браузере посетителя. Я согласен, поведение FF в этот момент странно. тест переполнения codepen.io/anon/pen/POjbaW отлично работает в FF и Chrome, какую версию ОС/браузера используете?   -  person G-Cyrillus    schedule 13.11.2017
comment
Это странно, с overflow-wrap во фрагменте он правильно ломается как в Chrome, так и в Firefox, но не на моем сайте. Может ли это быть связано с определением ширины div? На моем сайте у меня есть автоматическая ширина div, но во фрагменте она определена.   -  person WhyIsItReal    schedule 13.11.2017
comment
понятия не имею, CSS может быть переопределен другим правилом в другом месте или содержит ошибки с некоторыми другими правилами (отображение, выравнивание текста, ..)? Я действительно тоже запутался для вас :( (или конфиг? autoprefixer/prefixfree, ...) в пути?   -  person G-Cyrillus    schedule 13.11.2017
comment
В соответствии с консолью firefox можно применить либо overflow-wrap, либо word-wrap, но, поскольку они делают одно и то же, это не должно быть проблемой. Также не должно быть проблем с конфигурацией, так как это происходит как локально, так и онлайн.   -  person WhyIsItReal    schedule 13.11.2017
comment
Для слов, которые не содержат тарабарщины, а вместо этого используется реальный язык, вы можете заглянуть на caniuse.com/#feat =css-hyphens И для контента, которым вы полностью управляете, также нет причин не &shy; время от времени.   -  person CBroe    schedule 13.11.2017


Ответы (1)


Я бы предложил вообще удалить word-break и просто оставить overflow-wrap (или word-wrap, если вам нужна поддержка IE/Edge), и все должно быть в порядке.

Почему?

Обновить

Похоже, что спецификация была обновлена в Dec '18, чтобы упомянуть значение break-word как устаревшее:

Для совместимости с устаревшим содержимым свойство word-break также поддерживает устаревшее ключевое слово breakword. Когда указано, это имеет тот же эффект, что и word-break: normal и overflow-wrap: везде, независимо от фактического значения свойства overflow-wrap.

Старая часть ответа

word-break: break-word кажется ошибкой в ​​​​браузерах на основе Webkit (или, может быть, пережитком старых черновиков css 3?), поскольку break-word является правильным значением только для свойства overflow-wrap (или word-wrap для старых браузеров (и Edge ;)) ).

Я создал сравнение в скрипте js

источник:

спецификация разрыва слов

спецификация overflow-wrap / word-wrap

person Łukasz Godziejewski    schedule 17.05.2018