Не разрушающееся, но все еще (линейное) разбивающее пространство в HTML?
Что я могу использовать в HTML, если я хочу иметь пробел в середине строки, которая выглядит как три пробела, но все равно может быть сломана, если линия слишком длинная?
Обычное пустое пространство сбрасывается (пробел выглядит так же, как и одно пространство), а в неразрывном пространстве (& nbsp) строка не может быть разбита.
Обновление. Я думаю, что я действительно хочу тег
, который все равно может сломать длинные строки (мне нужно отобразить исходный код).
Ответы
Ответ 1
Как насчет одного или нескольких em-пространств (& emsp;)? Конечно, это будет зависеть от размера пользовательского шрифта. Если это не работает в вашем дизайне, рассмотрите en space (& ensp;).
Вы также можете посмотреть эту таблицу различных пространств в Википедии.
Ответ 2
У меня действительно есть точный ответ, который вы ищете. Я везде искал этот ответ, и ничто из предложенного не работало отлично. Итак, я придумал решение и попробовал его, и он был настил, что он работал без каких-либо ошибок!
Garrow был фактически прав (он просто не объяснил это или не взял его полностью). Решение вместо размещения
в покое, положите <wbr>
. Просто выполните простой поиск и замените и добавьте тег <wbr>
после каждого
. Прекрасно работает!
Тег <wbr>
- это малоизвестный тег, поддерживаемый во всех основных браузерах, который сообщает браузеру, что если он необходим, он будет использовать новую строку здесь.
Обновление: я нашел один браузер, который не работает точно в IE 8! Они фактически вытащили тег <wbr>
! Я решил эту проблему, создав класс, который гласит:
.wbr:before { content: "\200B" }
и вместо замены
на <wbr>
замените его следующим:
<wbr><span class='wbr'></span>
В PHP это будет выглядеть так:
$text = str_replace(" "," <wbr><span class='wbr'></span>", $text);
Не забудьте также добавить класс.
Очевидно, что это становится довольно чересчур избыточным, заменяя единое пространство всем этим, но оно работает так же, как хотелось бы, и поскольку я никогда не видел разметки, это сработало для меня.
Если это слишком грязно, другим решением является обмен двойными пробелами для
, за которым следует нормальное пространство. Это будет чередовать
и нормальные пробелы и будет работать в моих тестах.
В PHP это будет выглядеть так:
$text = str_replace(" "," ", $text);
Надеюсь, это поможет! Я достаточно исследовал это; Я думал, что должен передать его.
Ответ 3
Не будет ли пробел между двумя неразрывными пробелами?
& NBSP; & Амп; NBSP;
Ответ 4
Если вы не нацеливаете IE (кроме 8, режим стандартов):
<span style="white-space: pre-wrap"> </span>
Для IE <span style="width:3ex"></span>
работает в режиме quirks, поэтому объедините их и...
<span style="width:3ex;white-space:pre-wrap"> </span>
который, кажется, работает везде, где я пытался... кроме стандартов IE7. D'о!
Ответ 5
Как насчет <wbr> ?
Ответ 6
Как насчет двух
, за которыми следует регулярное пространство? Единственный недостаток этого (насколько я знаю) заключается в том, что если разрыв строки естественно попадает в обычное пространство, у вас будет немного отстающего пространства на предыдущей строке из-за неразрывных пробелов, но я не Думаю, что когда-либо изменит реальный внешний вид страницы.
Ответ 7
Лучше сделать шаг назад и спросить, что именно вы пытаетесь сделать. Что означает это лишнее пространство?
Ответ 8
он дает 100px в левом пространстве между вашим текстом
пробелов Пример
span style = "margin-left: 100px;"
(n_n)