如何测量符合文档宽度的字符数?

我需要在JavaScript中编写(我使用的是jQuery),这是一个能够识别适合浏览器窗口一行的字符数的函数。 我正在使用等宽字体来缓解这个问题,但如果我将它推广到不同的字体会更好。

我怎么知道浏览器中有多少个字符会填满? 目的是计算填充一行的字符数。

您可以创建元素并向其追加字符,直到您检测到包装,例如通过观察offsetHeight更改(您可以使用二分算法对其进行优化)。

这当然非常依赖于浏览器,系统,已安装的字体和用户的设置,因此每次显示页面,resize或用户更改字体大小时,您都必须为每个文本片段计算它(即使是整页缩放也会引入一些一个错误,可能导致字符数改变)。

因此,在大多数情况下它可能是一种矫枉过正,并且当实施不当时会导致比它解决的更多麻烦。

还有其他解决方案,例如,如果您想确保只有一行是可见的,您可以使用white-space:nowrapoverflow:hidden ,在某些浏览器text-overflow:ellipsis可以很好地剪切文本。 或者,如果您不想剪切单词,请使用带overflow:hidden 1行高容器overflow:hidden

您可以使用浏览器获取可用的总宽度

 window.innerWidth 

然后,您可以使用以下方法获取元素的宽度。

 document.getElemenById('elem').clientWidth 

在HTML中没有简单的方法可以做到这一点。

但是,如果你真的必须知道,你可以用一些非常丑陋的javascript来解决它:

首先,创建一个具有所需宽度的

,放入一些字符并以像素为单位请求其.height()。 然后,继续添加字符并继续检查.height(),当

的高度发生变化时,您知道它已经增长到适合新的文本行。