将单词分为音节并用连字符分隔,而不显示为

时间:2017-02-07 12:44:35

标签: html css css-hyphens

我想得到一个字符串,一个单词被分成一个或多个音节,如果不止一个,带有连字符,中间也是。

例如:我想从Floccinaucinihilipilification中获得Floccinaucinihilipil-ification。

目前的浏览器已经能够用连字符打破它们,语法正确。

原因:我希望显示一个类似于字典中显示的术语。因此,最简单的方法是访问浏览器如何破解它,但只能在一行中显示它。

换句话说:如果有足够的空间来显示至少最窄的音节,是否有任何方法可以访问用户代理?

2 个答案:

答案 0 :(得分:1)

如果有点单调乏味,可以确定单词包装在文档中的位置。但是,您还依赖于具有连字词典的浏览器,这可能取决于平台和用户的语言。

这是一种适用于Firefox的方法。我无法让Chrome或WebKit在每个可能的位置可靠地连字,并且它只是放弃了低于一定宽度的连字符。



string

testbed.innerHTML = testbed.innerHTML.replace(/./g, '<span>$&</span>');
outer = testbed.getBoundingClientRect();
match = [...testbed.querySelectorAll('span:not(:first-child)')].filter(e => e.getBoundingClientRect().x == outer.x);
match.forEach(e => e.classList.toggle('match', true));
output = [...testbed.children].map(e => (e.classList.contains('match') ? '-' : '') + e.textContent).join('');
console.log(output);
&#13;
div#testbed {
  width: 0;
  hyphens: auto;
}
span.match {
  background: magenta;
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果您想要自动连字,则必须使用第三方js库,例如Hyphenator

如果您想手动设置标记,例如&shy;,则可以在html内手动执行此操作。