jQuery / CSS:“normal”的行高==?px

时间:2010-09-01 00:55:30

标签: jquery css

我正在呼叫$("#foobar").css("line-height")并恢复“正常”。如何将其转换为像素数量? CSS规范中是“正常”定义还是浏览器特定?

5 个答案:

答案 0 :(得分:14)

根据this page,似乎大多数最近的浏览器对line-height: normal使用相同的值:1.14,id为font-size属性,系数为1.14。

尝试使用多种浏览器(在Windows XP上):

  • Chrome 21.0.1180.75
  • Firefox 14.0.1
  • Safari 5.1.7
  • Opera 11.64
  • IE 7
  • IE 8

修改

我错了,line-height取决于font-familyfont-size,您的浏览器,也许是您的操作系统......

更多阅读Eric Meyers' website

答案 1 :(得分:6)

normalline-height的有效设置,因此对于将返回该浏览器的浏览器而言,实际上没有办法解决这个问题。

或者,您可以使用.css('height'),因为它只会计算元素的内部部分,而不是填充/边框/边距。如果你有一个多行元素,或者一个元素不仅仅包含文本,那么这需要一点创造力。

http://jsfiddle.net/xVBfb/

编辑:解决方法的一个例子是

<span id='def' style='line-height:inherit;display:none;'>&nbsp;</span>

在元素中,然后找到行高,你可以使用#{1}的#def,因为它总是只有一行,因此是父元素的行高。


Windows XP中的Chrome是一个浏览器的示例,除非另有明确说明,否则将在该jsfiddle中返回.height()。 Firefox返回像素数。 normal是每个w3规范的初始值。 http://www.w3.org/TR/CSS2/visudet.html#propdef-line-height

答案 2 :(得分:5)

普通在several instances上实际上被称为abnormal,因为浏览器存在很大的不一致。

  

声明行高:不仅正常   从浏览器到浏览器各不相同,我   我曾预料到 - 事实上,量化   这些差异是整体的   点 - 但它们也因一种字体而异   面对另一个,也可以变化   在给定的面孔内。

答案 3 :(得分:1)

难以准确计算像素中的法线高度。但是,根据MDN,它大约是1.2em。

如果您:

body{
  font-size: 16px;
}

因此,您的网站的字体大小正常为16px,而正常的行高大约为24px。这意味着您可以计算正常的字体大小像素值乘以1.5的{​​{1}}

注意:我没有乘以1.2,因为px值和em值之间存在差异。

答案 4 :(得分:0)

然而,这是很久以前写的,但帮助我在​​我的任务中写了临时解决方案。我正在复制这段代码,而不是其他人可以使用它。

UPDATE bill b
SET b.isPaid = 
          (SELECT count(*)
           FROM bill_payment p
           WHERE p.bill_id = b.id) > 0;