在 CSS 中 hyphens: auto 允许自动识别语言的合理断字。语言派生自 lang 属性。
兼容性因语言和浏览器而异(遗憾的是,Chrome 中根本没有实现)。
您可能还会发现­ 的用途,这是一个手动断字线索。它被称为软连字符,不会被显式渲染,而只是向浏览器提示可能会破坏单词的位置。
Css tricks has a good writeup on the subject
编辑
根据您在 cmets 中的要求,我对 Resig 的 sn-p 进行了轻微改动,以便该模式以完整单词为目标,并在计算出的中间插入 <wbr>,而不是总是在阈值长度之后。
对实际模式的唯一修改是继续搜索,而不是在阈值之后停止。我也取消了分组括号,因为我们只会使用完整的单词:
RegExp("\\w{" + num + "}\\w+", "g")
然后我们找到单词的中心 (c = Math.floor(all.length/2)) 并在该点插入浏览器提示。我添加了一个参数来指示应该使用wbr 还是shy。后者在需要连字符时呈现为连字符,而前者不需要。
all.substring(0,c) + (!!shy?'­':'<wbr>') + all.substring(c)
请注意,对于大于num*2 的字长,各个部分也将超过阈值。为了解决这个问题,我简单地添加了递归:
function wbr(str, num, shy) {
return str.replace(RegExp("\\w{" + num + "}\\w+", "g"), function(all){
var c = Math.floor(all.length/2);
return wbr(all.substring(0,c) + (!!shy?'­':'<wbr>') + all.substring(c),num,shy);
});
}
Demo