Отсутствие разрыва строки после дефиса
Я ищу, чтобы предотвратить разрыв строки после дефиса -
на индивидуальной основе, которая совместима со всеми браузерами.
пример:
у меня есть этот текст: 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" />
есть ли способ, которым я могу предотвратить их от разрыва строки после дефиса? Мне не нужно никакого решения, которое относится ко всей странице... просто что-то, что я могу вставить по мере необходимости, например "нулевая ширина без символа разрыва", за исключением того, что работает.
вот демо. Просто сделайте рамку более узкой, пока линия не оборвется на дефисе.
5 ответов:
попробуйте использовать неразрывный дефис
‑
. Я заменил тире на этот символ в вашем jsfiddle, уменьшил рамку настолько, насколько это возможно, и линия больше не разделяется.
IE8 / 9 визуализируют неразрывный дефис, упомянутый в ответе CanSpice, дольше, чем типичный дефис. Это длина en-тире вместо типичного дефиса. Эта разница в показе была для меня разрывом сделки.
поскольку я не мог использовать ответ CSS, указанный Deb, я вместо этого решил не использовать теги break.
<nobr>e-mail</nobr>
кроме того, я нашел конкретный сценарий, который заставил IE8/9 сломаться на дефисе.
- строка содержит слова, разделенные неразрывные пробелы -
- ширина ограничена
- содержит тире
IE делает это так.
следующий код воспроизводит проблему, изображенную выше. Мне пришлось использовать мета-тег для принудительной визуализации в IE9, поскольку IE10 исправил проблему. Не возиться, потому что он не поддерживает мета-теги.
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="X-UA-Compatible" content="IE=9" /> <meta charset="utf-8"/> <style> body { padding: 20px; } div { width: 300px; border: 1px solid gray; } </style> </head> <body> <div> <p>If there is a - and words are separated by the whitespace code &nbsp; then IE will wrap on the dash.</p> </div> </body> </html>
вы также можете сделать это "столярный путь", вставив "
U+2060
Слово Столяр".если
Accept-Charset
разрешения, сам символ Юникода может быть вставить напрямую в вывод HTML.в противном случае это можно сделать с помощью кодирования сущностей. Например, присоединиться к тексту
red-brown
использовать:red-⁠brown
или (десятичный эквивалент):
red-⁠brown
. Другой полезный символ-это "
U+FEFF
нулевая ширина без перерыва"[ 1 ]:red-brown
и (десятичный эквивалент):
red-brown
[1]: обратите внимание, что пока этот метод еще работает в основных браузерах, таких как Chrome, он имеет считается устаревшим, так как Unicode 3.2.
сравнение "столярного пути" с "
U+2011
неразрывный дефис":
слово столяр может использоваться для всех других символов, а не только дефисов.
при использовании слова столяр, большинство визуализаторов растеризует текст тож. В Chrome, FireFox, IE и Opera рендеринг обычных дефисов, например:
a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z
идентичен рендерингу обычных дефисов (с U + 2060 Word Joiner), например:
a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z
в то время как вышеупомянутые два рендеринга отличаются от рендеринга "неразрывный дефис", например:
a-b‑c‑d‑e‑f‑g‑h‑i‑j‑k‑l‑m‑n‑o‑p‑q‑r‑s‑t‑u‑v‑w‑x‑y-z
. (Степень различия зависит от браузера и шрифта. Например, при использовании объявления шрифта "
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
поздно на вечеринку, но я думаю, что это на самом деле самый элегантный. Используйте слово столяр символ Юникода ; С обеих сторон тире, или длинное тире, или любой символ.
Так, вот так:
⁠—⁠
это соединит символ на обоих концах с его соседями (без добавления пробела) и предотвратит разрыв линии.