如何测量符合文档宽度的字符数?
我需要在JavaScript中编写(我使用的是jQuery),这是一个能够识别适合浏览器窗口一行的字符数的函数。 我正在使用等宽字体来缓解这个问题,但如果我将它推广到不同的字体会更好。
我怎么知道浏览器中有多少个字符会填满? 目的是计算填充一行的字符数。
您可以创建元素并向其追加字符,直到您检测到包装,例如通过观察offsetHeight
更改(您可以使用二分算法对其进行优化)。
这当然非常依赖于浏览器,系统,已安装的字体和用户的设置,因此每次显示页面,resize或用户更改字体大小时,您都必须为每个文本片段计算它(即使是整页缩放也会引入一些一个错误,可能导致字符数改变)。
因此,在大多数情况下它可能是一种矫枉过正,并且当实施不当时会导致比它解决的更多麻烦。
还有其他解决方案,例如,如果您想确保只有一行是可见的,您可以使用white-space:nowrap
和overflow:hidden
,在某些浏览器text-overflow:ellipsis
可以很好地剪切文本。 或者,如果您不想剪切单词,请使用带overflow:hidden
1行高容器overflow:hidden
。
您可以使用浏览器获取可用的总宽度
window.innerWidth
然后,您可以使用以下方法获取元素的宽度。
document.getElemenById('elem').clientWidth
在HTML中没有简单的方法可以做到这一点。
但是,如果你真的必须知道,你可以用一些非常丑陋的javascript来解决它:
首先,创建一个具有所需宽度的
,放入一些字符并以像素为单位请求其.height()。 然后,继续添加字符并继续检查.height(),当
的高度发生变化时,您知道它已经增长到适合新的文本行。