Словосочетание Firefox прерывает короткие слова в случайных точках
Я break-word
в контейнере, так что чрезвычайно длинные слова не будут переполняться. Хотя Chrome и Safari справляются с этим очень хорошо, кажется, что Firefox и IE любят прерывать слова случайным образом - даже короткие слова, в самых смешных моментах. Смотрите скриншоты ниже:
![enter image description here]()
Вот код, который я использую, чтобы предотвратить разрыв слов:
.break-word {
-ms-word-break: break-all;
word-break: break-all;
word-break: break-word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
hyphens: auto;
}
Это CSS, который я использую для контейнера и текста:
.wrap {
position: relative;
text-align: center;
margin: 40px auto 20px;
padding: 50px;
border: 4px double #f7f7f7;
display: block;
}
.quote-text {
font-size: 40px;
line-height: 50px;
font-weight: 400;
}
HTML
<div class="wrap break-word">
<div class="row-fluid quotation-marks">“”</div>
<span class="quote-text">
Having a partner definitely allows you to take more risks.
</span>
<span class="author">Arianna Huffington</span>
</div>
Почему это происходит? Любые подсказки о том, как я могу заставить слова нормально ломаться во всех браузерах? Firefox определенно является приоритетом.
Спасибо заранее!
Ответы
Ответ 1
Вы удваиваете параметры CSS. Попробуйте это.
.break-word {
-ms-word-break: break-all;
-ms-word-wrap: break-all;
-webkit-word-break: break-word;
-webkit-word-wrap: break-word;
word-break: break-word;
word-wrap: break-word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
hyphens: auto;
}
Ответ 2
Я сделал временное исправление, изменив код моего слова:
.break-word {
word-break: break-word;
word-wrap: break-word;
}
Слова уже не странные. Я просто не уверен, насколько это безопасно с точки зрения кросс-браузерной поддержки (поскольку я тестировал только последние версии Chrome, Firefox и Safari).
Очевидно, что перенос поддерживается только при явном объявлении en-US
. Если у кого-то есть более верный ответ/объяснение, я с радостью приму ваш ответ.
Ответ 3
Удалите word-break: break-all
. Его смысл в том, что он создает точную проблему, которую вы описываете: браузеру поручено разбить слова на куски по своему усмотрению.
Использование word-wrap: break-all
более разумно (или менее бессмысленно), потому что оно сообщает браузеру сломать слово только тогда, когда нет другого способа сделать линию подходящей в доступной ширине. Но это также нарушает правила английского и большинства других языков: неправильно сломать слово в произвольной точке. Так что уберите его тоже.
Перенос имеет гораздо больший смысл, но он имеет ограниченную поддержку браузера, и по очевидным причинам он требует, чтобы язык текста был объявлен (поскольку правила переносов сильно зависят от языка). Вы можете использовать перенос на основе JavaScript, например Hyphenator.js, чтобы иметь дело с браузерами, которые не поддерживают перенос CSS
Ответ 4
word-break:keep-all;
решил проблему для меня