找出div适合多少个字母



我有一个标准宽度/高度的div ..我应该知道什么css参数,以计算有多少字母的div适合没有溢出?我认为下列参数是必要的…

  1. 字体大小
  2. text-indext
  3. 字母间距
  4. 行高

那么我怎么能计算字母的div适合的最大数量?

一个div可以容纳多少字符是很难衡量的,因为不同的浏览器有不同的呈现方法,不同的开销,甚至图形适配器的抗锯齿效果也可能略有不同。另一个可能起作用的因素是每英寸的像素,输出显示器可以显示。除此之外,字体本身和文本也起着作用,因为你通常不会处理固定的字体。所以你需要了解很多关于使用的硬件,软件和深入的字体参数,这在javascript中大多超出了范围。

无论如何,可能有一种方法…

根据您想知道的内容,您可以使用具有固定宽度和高度的隐藏标签,并使用scrollLeft和scrolltop属性来确定文本是否超出标签尺寸。这可以通过将scrollLeft和/或scrollTop-Properties设置为非常高的值(例如99999)来实现,然后浏览器将用实际值替换这些值。这些值为0或大于0。如果它们大于0,则该值表示像素数,文本将溢出。

隐藏字段的重要之处在于,它必须被添加到文档节点树中(使用appendChild)

您可以创建一个循环来填充字符(或您的文本)到您的隐藏文件中,该文件与源标记/字段具有完全相同的属性(使用cloneNode(true))。在循环中,您将检查scrollLeft/scrollTop是否存在溢出。如果它溢出,您将拥有标记可以显示的最大文本。为了加快速度,你可能想把隐藏的标签移出浏览器视图(例如left: 10000px;)。

测量后,您可以从节点树中删除隐藏的标记。要小心广泛使用-实现可以相对快速-但如果您希望在前端情况下在客户端执行数十次检查,则用户体验可能会迅速下降,这取决于浏览器类型,处理器速度和客户端的系统负载。

首先让我们假设div上有一个固定的css:

width
height
line-height
font-size
font-family
etc.

我会写一些javascript来填充这个div多次与不同的文本(可能从实际文章拉),并在不同的浏览器这样做。每次计算填充的最大字符数,但不要溢出div。然后你有一个上限,你需要发送的数字字符总是填充div。截断你的滑块中的每篇文章到该数字。你可以添加10个字符,如果你想确保溢出,然后使用溢出隐藏或省略号或其他。

您可以在已经在屏幕上绘制的对象上使用getClientRects(),但我假设您想在渲染之前计算这个,是吗?

编辑:哦,我刚刚注意到你说你不能使用Javascript。对不起,我以为你指的是Javascript。这就改变了问题。
在服务器端,你不知道浏览器将使用哪种字体,是否将每个字符的宽度四舍五入到整个像素,等等。

最新更新