Подтвердить что ты не робот

Дискреционный разрыв строки в HTML?

Я ищу способ указать, где строка должна сломаться , если она не может поместиться на своей строке способом, подобным ­ (soft/discretionary dehen), но с пробелом, Я пробовал искать его, но не получал много соответствующих хитов (в основном для InDesign, несмотря на указание "html" ), и то, что я действительно получал, было несколько человек, говорящих, что они не знали об этом.

Исх.

Привет, мое имя
это foo.
vs.
Привет,
Мое имя - foo.
, но если доступно пространство:
Привет, меня зовут foo.

Для специфичности я не имею в виду white-space: normal/nowrap/pre/…, и я не хочу, чтобы сделать разрыв, как с <br />.

Я использую AngularJS, поэтому большинство из них обрабатывается через JavaScript, поэтому, если есть простой/эффективный/умный способ сделать это с этим, я буду открыт для него.

4b9b3361

Ответ 1

Чтобы указать, где разрыв строки не должен отображаться между словами, используйте слово NO-BREAK SPACE или " " между словами. Любое нормальное пространство прерывается. Таким образом, вы можете написать, например.

Hello,&nbsp;my&nbsp;name is&nbsp;foo. 

Если вы предпочитаете указывать разрешенные перерывы (в соответствии с вашим комментарием ниже), вы можете обернуть текст внутри элемента nobr (нестандартного, но работает как шарм) или внутри любого элемента, для которого вы установили white-space: nowrap, тем самым запрещая разрывы строк, за исключением случаев, когда они явно принудительно или разрешены. Затем вы использовали тег <wbr> (нестандартный, но...) или ссылку на символ &#8203; или &#x200b; (для ледового ZERO WIDTH SPACE) после пробела, чтобы разрешить разрыв строки, например

<nobr>Hello, <wbr>my name <wbr>is foo.</nobr>

Выбор между <wbr> и ZERO WIDTH SPACE является сложной проблемой, главным образом из-за особенностей IE.

Ответ 3

Я не думаю, что есть какой-нибудь родной способ сделать это, но вот хак, который я использовал, когда мне действительно нужно такое:

var str = "Hello,<br>My name is foo.";

str = str.replace(/ /g, '&nbsp;').replace(/<br>/g, ' ');

В принципе, используйте неразрывное пространство для разделения слов, которые вы не хотите сломать.

Смотрите здесь в действии: http://jsfiddle.net/5xmt6/ (измените размер окна, чтобы увидеть, как он реагирует).


Примечание: это очень опасно и представляет собой собственный набор проблем; а именно: если окно просмотра становится очень узким, остальная часть текста не будет завершена.