如何确定';线条高度';使用Javascript(jQuery)?

如何确定';线条高度';使用Javascript(jQuery)?,javascript,jquery,dom,Javascript,Jquery,Dom,那么,遇到了需要一个行距编码的插件,那么,你能给个建议吗? (谢谢) 以像素为单位以十进制值返回行高,例如“22.5px” 使用此解决方案时应小心,因为不同的浏览器会报告不同的结果。 我发现你不能在CSS中使用线条高度的无单位度量(如2.2),因为IE6会报告错误的结果(如2px而不是36px)。 因此,我建议使用基于单位的线条高度进行此测量。您不能保证在浏览器中获得以像素为单位的计算线条高度。有时该值是“normal”或“inherit”,例如,它是在Firefox中计算的,但在IE中不是。一

那么,遇到了需要一个行距编码的插件,那么,你能给个建议吗? (谢谢)

以像素为单位以十进制值返回行高,例如“22.5px”

使用此解决方案时应小心,因为不同的浏览器会报告不同的结果。 我发现你不能在CSS中使用线条高度的无单位度量(如2.2),因为IE6会报告错误的结果(如2px而不是36px)。
因此,我建议使用基于单位的线条高度进行此测量。

您不能保证在浏览器中获得以像素为单位的计算线条高度。有时该值是“normal”或“inherit”,例如,它是在Firefox中计算的,但在IE中不是。一种解决方法(当然取决于您的用例)是获得计算出的字体大小(您可以看到),然后将其乘以1.5,这相当于:

是的,这有点粗俗,但它可以很好地用于确定基于一些文本行数的元素的正确高度。请记住,您可以/应该将1.5替换为您可能已经在站点上使用的任何标准行高/字体大小比率。如果您不知道,您可以通过检查firebug中的任何复制元素并查看计算出的a)字体大小和b)行高来找到答案。然后,将1.5替换为b/a.:-)

希望这是有帮助的

$('selector').css('line-height');
如果返回带有px的数字,则可以使用该数字。 如果它返回一个%或一个没有单位的数字,您可以将其乘以字体大小并使用它。 如果它恢复正常,我设法解决了这个问题:

var height = $element.height();
var font_size = parseInt($element.css('font-size'));
var num = Math.floor(height / font_size);
for(; height % (height / num) != 0; --num)
    ;
return height / num;
这只适用于“正常”,因为您可以假定行距始终大于字体大小

它是基于
height%line\u height==0


从技术上讲,
num==height/line\u height
,这使得它不可知。幸运的是,
height/font\u size
的底部是一个很好的启发,因为它和
height/line\u height
通常相同或相近,而且如果你不在,你总是会超调,这也是因为“normal”保证行高大于字体大小,所以你可以测试并重试。

获取并存储文本,将文本临时设置为一行值(如“x”或“),获取并存储.height(或.inner或.outer,根据需要),用存储的值替换文本。如有必要,显示(例如,元素已隐藏),然后在必要时再次隐藏

此(.height)将以数字形式给出总行高(字体大小加上行高调整)(如15表示字体大小12,行高1.25)

如果需要,可以使用隐藏的div来执行所有这些操作,如显示、获取高度、隐藏

此警报显示数字值15,所有浏览器:

<div id="TestDiv">
    Any text you want.
</div>

    jQuery(document).ready(function()
{
    var TestText = $("#TestDiv").text();
    var TestDivLineHeight = $("#TestDiv")
        .css("font-size", "12px").css("line-height", "1.25").text("x").height();
    alert(TestDivLineHeight);
    $("#TestDiv").text(TestText);
});

任何你想要的文本。
jQuery(文档).ready(函数()
{
var TestText=$(“#TestDiv”).text();
var TestDivLineHeight=$(“#TestDiv”)
.css(“字体大小”,“12px”).css(“行高”,“1.25”).text(“x”).height();
警报(TestDivLineHeight);
$(“#TestDiv”).text(TestText);
});

噢,谢谢,我不明白为什么,但我只是忘记了.css()不仅可以设置值,还可以…记住在答案正确时将其标记为正确!=)错。在opera中,它返回“正常”。请小心–在许多浏览器中,您会得到一个看起来像
16px
,但在IE中,有时您可能会得到一个像
1.2
一样的裸
数字。另一个警告:
$('Div1').css('line-height')*numberOfLinesDiv1Has
并不总是等于
$('Div1').height()
(但通常非常接近)。这将返回CSS中的任何属性值,不一定以像素为单位。例如,它可以是字符串
'normal'
。小心–在许多浏览器中,您会得到一个看起来像
16px
的值,但在IE中,您有时可能会得到一个裸
数字
1.2
。请注意,您不会简单地返回所得到的内容你在CSS中使用的r单位。检查一下:这是我找到的最好的解决方法!非常感谢!如果你将线高度设置为无单位值(这是什么),这在IE中不起作用。请参阅。您可能希望使用parseFloat而不是parseInt,因为如果字体大小中有十进制值,您将获得更准确的线宽值。Alan,John硬编码了一个线宽值而不是计算它,因此您的注释似乎与此答案不相关。从原始帖子编辑,将“12”更改为“12px”如果您希望Internet Evil 6和7的值正确,那么您还必须小心地消除顶部和底部的填充。
var font\u size=function使这个数字($element.css('font-size'));
可以简化,您不需要自定义函数。请改用parseInt:
var font\u size=parseInt($element.css('font-size'))
@Twist我也注意到了。更新!
$('selector').css('line-height');
var height = $element.height();
var font_size = parseInt($element.css('font-size'));
var num = Math.floor(height / font_size);
for(; height % (height / num) != 0; --num)
    ;
return height / num;
<div id="TestDiv">
    Any text you want.
</div>

    jQuery(document).ready(function()
{
    var TestText = $("#TestDiv").text();
    var TestDivLineHeight = $("#TestDiv")
        .css("font-size", "12px").css("line-height", "1.25").text("x").height();
    alert(TestDivLineHeight);
    $("#TestDiv").text(TestText);
});