#html #css #word-wrap #word-break
#HTML #css #перенос слов #разрыв слова
Вопрос:
Я хочу обернуть или разбить слово, в котором есть несколько дефисов, таких как «лицом к лицу» или «все или ничего». Такие слова и выражения, похоже, не разбиваются естественным образом в HTML.
Единственный успех, который я имел при попытке использовать разные комбинации, был с word-break:break-all, но он не разбивает слово ни на какие дефисы и часто оставляет одну букву в одной строке.
Вот пример:
<style>
.two-hyphens {
width: 10px;
font-size: 40px;
border: 1px solid #000;
}
</style>
<div class="two-hyphens">
Face to face
<br><br>
Face-to-face
</div>
Ответ №1:
Попробуйте следующее:
.breakAtHyphen {
word-break: keep-all;
}
Убедитесь, что вы назначили этот класс своему тегу, содержащему текст.
Вот ресурс, который должен помочь с пониманием word-break
свойства: CSS Word-Break Property
Комментарии:
1. Учитывая это: поведение
word-break: keep-all
описывается как » разрывы [word] не должны использоваться для текста на китайском / японском / корейском языках (CJK). Поведение текста, отличного от CJK, такое же, как и для обычного. » Я немного удивлен, что это решает проблему (ссылка:word-break
.2. @DavidsaysreinstateMonica Основываясь на примере w3schools, который я опубликовал в ответе, приведенный ими пример конкретно касается разрыва дефисов. Однако очень интересно, что разрывы не работают с текстом CJK. Каждый день изучайте что-то новое!
3. Я пытался
word-break: keep-all
, но это не работает. Может быть, есть другие теги на более высоких уровнях, которые могут мешать? Я пробовал на многих уровнях, но безуспешно. Я обнаружил, что перенос дефиса в div сdisplay:inline-block
свойствами сделал свое дело и работал везде.4. @johnnyg0 Если вы разместите код там, где находится текст, я, возможно, смогу немного помочь. Если вы собираетесь, обязательно разместите как HTML, так и CSS
5. @lime Я только что добавил пример кода, в котором он не работает. Я нашел обходной путь, который я опубликовал ниже. Это работает, но немного неуклюже. Может быть, у вас есть лучшее решение?
Ответ №2:
вы пробовали использовать javascript или jquery? попробуйте использовать replace для замены —
Ответ №3:
Я обнаружил, что перенос дефиса в div с помощью свойств display:inline-block, похоже, делает свое дело.
face<div style="display: inline-block;">-</div>to<div style="display: inline-block;">-</div>face<br>
И все же мне интересно, есть ли лучшие способы сделать это.