2011-12-15 57 views
0

我有一个div与一些标准的宽度/高度。 我应该知道什么样的CSS参数,计算有多少字母的div适合没有溢出? 我以为有以下parametrs是neccessery ..找到多少字母适合

  1. 字体大小
  2. 文本indext
  3. 字母间距
  4. 的line-height

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

+4

除非您使用固定宽度的字体,否则它取决于使用哪些字母。 – 2011-12-15 19:23:04

+0

好的,我用随机文本填充div,看看有多少个字母.. 这是伎俩不工作到我的朋友的MAC电脑.. MAC中的文本溢出.. 我尝试使用em而不是px .. So so em .. 任何帮助? – 2011-12-15 19:28:17

+0

选中此项。并使用Javascript:http://stackoverflow.com/questions/118241/calculate-text-width-with-javascript – 2011-12-15 19:38:59

回答

0

首先,让我们假设你有上的div固定的CSS :

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

我会写一些JavaScript来填补这个div很多次不同的文本(也许拉的形式实际文章),并在不同的浏览器中这样做。每次计算填充的最大字符数,但不要溢出div。然后你需要发送的数字字符的上限始终填满div。将滑块中的每篇文章截断为该数字。如果你想确保溢出,然后使用隐藏或省略或其他什么,你可以添加10个字符。

0

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

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

3

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

好歹有可能是一个办法......

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

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

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

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