HTML中的自由裁量换行?

jac*_*cob 16 html control-characters

我正在寻找一种方法来指定一条线如果它不能以类似于­(软/自由连字符)的方式放在它的线上而应该中断,但是有一个空格.我尝试使用谷歌搜索,但没有得到很多相关的点击(尽管指定"html",主要是针对InDesign),我得到的是一些人说他们不知道的方式.

防爆.

你好,我的名字
是foo.

你好,
我的名字是foo.
但如果空间可用:
你好,我的名字是foo.

对于特异性,我不是故意的white-space: normal/nowrap/pre/…,我不想强​​迫休息<br />.

我正在使用AngularJS,所以大多数都是通过JavaScript处理的,所以如果有一个简单/有效/聪明的方法来做到这一点,我会对它持开放态度.

Juk*_*ela 10

以指示换行符应该不是单词之间出现,使用NO-BREAK SPACE,或'',字与字之间.任何正常空间都是易碎的.所以你可以写例如

Hello,&nbsp;my&nbsp;name is&nbsp;foo. 
Run Code Online (Sandbox Code Playgroud)

如果您希望指出允许的中断(根据下面的注释),您可以将文本包装在nobr元素内(非标准,但像魅力一样)或在您设置的任何元素内部white-space: nowrap,从而禁止换行,除非明确强制或允许的.然后,您将在空格使用<wbr>标记(非标准,但是......)或字符引用&#8203;&#x200b;(对于冰零宽度空间)以允许换行,例如

<nobr>Hello, <wbr>my name <wbr>is foo.</nobr>
Run Code Online (Sandbox Code Playgroud)

<wbr>和ZERO WIDTH SPACE 之间的选择是一个棘手的问题,主要是由于IE奇怪.

  • 如果需要换行,我想准确指定换行应该出现的位置.我真的更喜欢使用一个字符来指定它应该发生的位置,而不是使用一堆字符来指定它不应该在任何地方. (3认同)

chr*_*mer 9

你可以使用<wbr>标签.

编辑:如评论中所述,您可以使用零宽度空间 :( &#8203;另请参阅:与...相反的是什么?)

  • 仅适用于HTML5.此外,尝试找到*w3schools以外的资源*:D (6认同)
  • [`wbr`](https://developer.mozilla.org/en-US/docs/HTML/Element/wbr)用于打破一个单词内的*.OP希望引导浏览器在单词集之间中断. (6认同)
  • @pst - 不能同意更多关于*从w3schools到地狱*. (2认同)
  • 对w3chools的引用是废话,但使用`wbr`是一个实用的解决方案. (2认同)

Jos*_*ber 2

我不认为有任何本地方法可以做到这一点,但每当我真正需要这种东西时,我都会使用以下方法:

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

str = str.replace(/ /g, '&nbsp;').replace(/<br>/g, ' ');
Run Code Online (Sandbox Code Playgroud)

基本上,使用不间断空格来分隔您不想中断的单词。

请参阅此处的实际操作:http://jsfiddle.net/5xmt6/(调整窗口大小以查看其反应)。


注意:这是非常hacky的,并且引入了它自己的一系列问题;即:如果视口变得非常窄,则文本的其余部分将不会换行。