Не разрушающееся, но все еще (линейное) разбивающее пространство в HTML?

Что я могу использовать в HTML, если я хочу иметь пробел в середине строки, которая выглядит как три пробела, но все равно может быть сломана, если линия слишком длинная?

Обычное пустое пространство сбрасывается (пробел выглядит так же, как и одно пространство), а в неразрывном пространстве (& nbsp) строка не может быть разбита.

Обновление. Я думаю, что я действительно хочу тег

, который все равно может сломать длинные строки (мне нужно отобразить исходный код).

Ответы

Ответ 1

Как насчет одного или нескольких em-пространств (& emsp;)? Конечно, это будет зависеть от размера пользовательского шрифта. Если это не работает в вашем дизайне, рассмотрите en space (& ensp;).

Вы также можете посмотреть эту таблицу различных пространств в Википедии.

Ответ 2

У меня действительно есть точный ответ, который вы ищете. Я везде искал этот ответ, и ничто из предложенного не работало отлично. Итак, я придумал решение и попробовал его, и он был настил, что он работал без каких-либо ошибок!

Garrow был фактически прав (он просто не объяснил это или не взял его полностью). Решение вместо размещения &nbsp; в покое, положите &nbsp;<wbr>. Просто выполните простой поиск и замените и добавьте тег <wbr> после каждого &nbsp;. Прекрасно работает!

Тег <wbr> - это малоизвестный тег, поддерживаемый во всех основных браузерах, который сообщает браузеру, что если он необходим, он будет использовать новую строку здесь.

Обновление: я нашел один браузер, который не работает точно в IE 8! Они фактически вытащили тег <wbr>! Я решил эту проблему, создав класс, который гласит:

.wbr:before { content: "\200B" }

и вместо замены &nbsp; на &nbsp;<wbr> замените его следующим:

&nbsp;<wbr><span class='wbr'></span>

В PHP это будет выглядеть так:

$text = str_replace(" ","&nbsp;<wbr><span class='wbr'></span>", $text);

Не забудьте также добавить класс.

Очевидно, что это становится довольно чересчур избыточным, заменяя единое пространство всем этим, но оно работает так же, как хотелось бы, и поскольку я никогда не видел разметки, это сработало для меня.

Если это слишком грязно, другим решением является обмен двойными пробелами для &nbsp;, за которым следует нормальное пространство. Это будет чередовать &nbsp; и нормальные пробелы и будет работать в моих тестах.

В PHP это будет выглядеть так:

$text = str_replace("  ","&nbsp; ", $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

Как насчет двух &nbsp;, за которыми следует регулярное пространство? Единственный недостаток этого (насколько я знаю) заключается в том, что если разрыв строки естественно попадает в обычное пространство, у вас будет немного отстающего пространства на предыдущей строке из-за неразрывных пробелов, но я не Думаю, что когда-либо изменит реальный внешний вид страницы.

Ответ 7

Лучше сделать шаг назад и спросить, что именно вы пытаетесь сделать. Что означает это лишнее пространство?

Ответ 8

он дает 100px в левом пространстве между вашим текстом  пробелов Пример

span style = "margin-left: 100px;"

(n_n)