在任意非空白字符上包装文本

时间:2012-09-22 18:09:15

标签: javascript jquery html css

我有很长的名称空间要显示在我的文章中(如MyProject\Sub\Level),如果窗口宽度不足,我希望它们包装在反斜杠字符(\)上。我如何使用CSS或JS / jQuery实现它?

4 个答案:

答案 0 :(得分:2)

告诉浏览器在字符后允许换行符,在字符后插入ZERO WIDTH SPACE(ZWSP)字符U + 200B。在HTML标记中,您可以使用字符引用“,例如

MyProject\​Sub\​Level

如果您通过脚本添加字符,则可以使用字符串文字\u200b输入字符本身。

一些旧的浏览器(IE 6)曾经遇到过这方面的问题,但是现在这种方法似乎比替代方案更好,旧的<wbr>标记(它得到了很好的支持,但现在已被搞砸了)新版IE)。

答案 1 :(得分:1)

一种选择是在&shy;个字符周围使用软连字符(\); soft-hyphen允许一个单词在给定点处断开,如果单词出现,则只显示 ,实际上在该点处断开。

如果复制并粘贴(在Chromium 19 / Ubuntu 11.04中测试),它也不会出现在文本中;这种方法使用replace()和jQuery的html()方法,并使用以下HTML:

<ul>
    <li>\some\text\possibly\a\path</li>
    <li>\another\path</li>
    <li>\something\else\also\quite\long</li>
</ul>​

和CSS:

li {
    width: 8em;
    border: 1px solid #000;
}​

jQuery的:

$('li').html(function(i, h) {
    return h.replace(/(\\)/g, '&shy;$1&shy;')
});​

JS Fiddle demo

显然,您不需要在\字符的两个侧使用软连字符,这只是可能的演示>被使用。

另一种方法是,如果您宁愿避免在断点处出现-个字符,则使用与上面相同的方法,而是插入一个空的span元素,然后给出风格display: inline-block;

jQuery的:

$('li').html(function(i, h) {
    return h.replace(/(\\)/g, '$1<span></span>')
});​

CSS:

li {
    width: 8em;
    border: 1px solid #000;
}
li span {
    display: inline-block;
}

JS Fiddle demo

参考文献:

答案 2 :(得分:0)

在包含文本的元素中使用以下css:

word-wrap: break-word;

这是现代浏览器支持的css3属性:Google Chrome 6,Internet Explorer 8,Firefox 3,Opera 10和Safari 5.

Acclaration :它不会仅在/个字符上中断,它可能会根据容器的拉伸而破坏单词的任何字符。< / p>

答案 3 :(得分:0)

您可以按照jQuery - Find and replace text, after body was loaded上的示例操作,并在每个斜杠后插入一个中断