找出多少字母div适合

时间:2011-12-15 19:17:46

标签: javascript css text size

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

  1. 字体大小
  2. 文本indext
  3. 字母间距
  4. 行高
  5. 然后我如何计算div适合的最大字母数?

3 个答案:

答案 0 :(得分:3)

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

无论如何可能有办法...

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

隐藏字段很重要,它必须添加到文档节点树(使用appendChild)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

我会写一些javascript用不同的文本(可能从实际文章中拉出来)多次填充这个div,并在不同的浏览器中执行此操作。每次计算填充的最大字符数,但不要溢出div。然后,您需要发送的数字字符的上限始终填充div。将滑块中的每篇文章截断为该数字。如果要确保溢出,则可以添加10个字符,然后使用溢出隐藏或省略号等。