可选的换行符HTML实体,始终不可见

Dav*_* J. 47 html line-breaks html-entities

我想要一个可选的换行符,它总是不可见的,适用于word-wrap: break-word;CSS样式.

以下是一些细节.我的目标是在合理的地方拆分长链接.这些字符是一个良好的开端:-,.,_,/,\.这不是特定于Rails的问题,但我想分享一些我现在正在使用的代码:

module ApplicationHelper
  def with_optional_line_breaks(text)
    text.gsub(%r{([-._/\\])}, '\1­')
  end
end
Run Code Online (Sandbox Code Playgroud)

这是上面代码的问题:当­生效时(在带有:)的表中word-wrap: break-word;,­显示为-.我不想看到-; 我想要一个没有显示任何角色的换行符.


Dav*_* J. 78

​ 是一个名为零宽度空间(ZWSP)的unicode字符的HTML实体.

"在HTML页面中,这个空间可以用作长词中的潜在换行符,作为<wbr>标签的替代." - 零宽度空间 - 维基百科

Aaron的回答<wbr>所述,标签也有效.我认为我喜欢这个HTML实体而不是标签,因为实体看起来更简单:unicode处理它,而不是Web浏览器.

  • Unicode处理它,但Web浏览器不需要符合Unicode标准或支持此特定字符.这是一个棘手的问题,但一般来说,ZWSP仅在相当旧的浏览器上失败,而`<wbr>`在新浏览器中也有奇怪之处; 见http://www.cs.tut.fi/~jkorpela/html/nobr.html (4认同)

Aar*_*paa 7

<wbr>看起来它做了你想要的,它看起来像对它的支持,并且&shy;就此而言,是非常不一致的.所以不幸的是,可能没有一种特别好的方法来做你想要的.

  • “ &lt;wbr&gt;”相对于零宽度空间Unicode实体的一个优点是,如果您要中断的字符串是一个可能从浏览器复制的URL(例如,在提供对非链接),就会复制Unicode实体(至少在MacOS中如此),并且所得到的URL在浏览器中看起来正确,但是在尝试访问它时会中断。`&lt;wbr&gt;`没有这个问题。 (3认同)
  • 谢谢.注意:声称浏览器支持不一致是从2008年开始.在我的系统上,现代浏览器(Firefox,Safari,Chrome)使用`<wbr>`做正确的事情.我希望它们也适用于其他字/行破解方法.综合会计可以在[软连字符(SHY) - 一个难题?]中找到.(http://www.cs.tut.fi/~jkorpela/shy.html) (2认同)

Geo*_*all 6

我将在 2019 年将此作为答案发布,尽管它的实质内容完全来自此页面上的其他贡献:使用<wbr>。它可以很好地允许长 URL 的包装,因此不会让它们脱离内容框。<wbr>根据 caniuse.com 和我自己在 Chrome 和 Firefox for Android 中的快速测试,用户能够将您显示的链接粘贴到网络浏览器中确实很重要,并且在现代浏览器中支持很好。我用正斜杠和 WBR 替换了正斜杠,现在 URL 包装得很好。