Я пытаюсь предотвратить разрыв строки после дефиса -
в каждом конкретном случае, который совместим со всеми браузерами.
Пример:
У меня есть этот текст: 3-3/8"
который в HTML это: 3-3/8”
Проблема в том, что в конце строки, из-за дефиса, он разрывается и переносится на следующую строку, а не обрабатывается как полное слово ...
3-
3/8"
Я попытался вставить "символ нулевой ширины без разрыва", 
но не повезло ...
3-3/8”
Я вижу это в Safari и думаю, что это будет одинаково во всех браузерах.
Ниже моя doctype
и кодировка символов ...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
Есть ли способ, которым я могу предотвратить разрыв строки после дефиса? Мне не нужно никакого решения, которое применимо ко всей странице ... просто что-то, что я могу вставить по мере необходимости, например "символ нулевой ширины без разрыва", кроме того, которое работает.
Вот демо. Просто сделайте рамку уже, пока линия не обрывается на дефисе.
‑
неразрывный дефис.3-3/8″
или3-3/8″
. Цитаты не являются простыми числами. Если вы хотите это в чистом ASCII, просто используйте прямые двойные кавычки ("
). Предпочтительно, если он будет представлен как хороший, разборчивый текст, вместо этого вы должны использовать3<span style="font-variant: diagonal-fractions">3/8</style>″
отображение «3⅜ ″»Ответы:
Попробуйте использовать неразрывный дефис
‑
. Я заменил черту этим символом в вашем jsfiddle, сократил фрейм настолько, насколько это возможно, и линия там больше не разбивается.источник

. Просто мне никогда не приходило в голову, что существует отдельный символ дефиса, который не сломается.Вы также можете обернуть соответствующий текст
источник
‑
) может отображаться немного дольше, чем обычный дефис, было тривиально для меня.IE8 / 9 отображает неразрывный дефис, упомянутый в ответе CanSpice, дольше, чем типичный дефис. Это длина черты вместо типичного дефиса. Эта разница в показе была для меня выгодной сделкой.
Поскольку я не мог использовать ответ CSS, указанный Deb, я вместо этого решил не использовать теги break.
Кроме того, я обнаружил конкретный сценарий, который привел к разрыву IE8 / 9 на дефисе.
IE делает это так
Следующий код воспроизводит проблему, изображенную выше. Мне пришлось использовать метатег для принудительного рендеринга в IE9, так как IE10 исправил проблему. Нет скрипки, потому что он не поддерживает метатеги.
источник
nobr
является наиболее кросс-браузерным способом и работает независимо от шрифтов и CSS.nobr
Элемент не определен в HTML спецификации, но это следует рассматривать лишь как формальность. Но если вы должны писать по спецификациям HTML, то ответ Деба с использованием CSS - лучший вариант.nobr
тег нестандартный и может сломаться в любое время. Документация MDN не рекомендует использовать этот тег: developer.mozilla.org/en-US/docs/Web/HTML/Element/nobrВы также можете сделать это "способом соединения", вставив "
U+2060
Word Joiner" ".Если
Accept-Charset
позволяет, сам символ Unicode может быть вставлен непосредственно в вывод HTML.В противном случае это может быть сделано с использованием кодирования объекта. Например, чтобы присоединиться к тексту
red-brown
, используйте:или (десятичный эквивалент):
, Еще один полезный персонаж - «
U+FEFF
Пространство без разрывов нулевой ширины » [ 1] :и (десятичный эквивалент):
[1] : обратите внимание, что, хотя этот метод все еще работает в основных браузерах, таких как Chrome, он не рекомендуется с Unicode 3.2 .
Сравнение «Столярного пути» с «
U+2011
Неразрывным дефисом »:Слово «присоединение» может использоваться для всех других символов, а не только для дефисов.
При использовании слова joiner большинство средств визуализации растеризует текст одинаково . В Chrome, FireFox, IE и Opera отображение обычных дефисов, например:
идентично отображению обычных дефисов (с U + 2060 Word Joiner), например:
в то время как вышеупомянутые два рендера отличаются от рендеринга " Неразрывного дефиса ", например:
, (Степень различия зависит от браузера и шрифта. Например, при использовании объявления шрифта "
arial
", Firefox и IE11 показывают относительно большие различия, в то время как Chrome и Opera показывают меньшие изменения.)Сравнение "Столярного пути" с
<span class=c1></span>
(CSS.c1 {white-space:nowrap;}
) и<nobr></nobr>
:Слово «присоединяющийся» может использоваться в ситуациях, когда использование HTML-тегов ограничено, например, на сайтах и форумах.
Что касается спектра представления и содержания , большинство будет рассматривать слово «присоединение» ближе к контенту по сравнению с тегами.
• Как протестировано на Windows 8.1 Core 64-битной
версии с использованием: • IE 11.0.9600.18205
• Firefox 43.0.4
• Chrome 48.0.2564.109 (официальная сборка) m (32-битная
версия ) • Opera 35.0.2066.92
источник
bingo-⁠bongo

Поздно на вечеринку, но я думаю, что это на самом деле самый элегантный. Используйте символ Unicode WORD JOINER & # 8288 ; по обе стороны от вашего дефиса, или их тире, или любого другого персонажа.
Итак, вот так:
Это соединит символ на обоих концах с его соседями (без добавления пробела) и предотвратит разрыв строки.
источник