JavaScript:将ex转换为px

时间:2012-09-18 05:36:22

标签: javascript

所以我正在阅读elem.style.width,并获得类似“3.1415926ex”的内容。

我想将其转换为“px。”

JavaScript是否已内置函数来执行此操作?我宁愿砍下最后2个字母的字符串,将其读作数字,然后乘以魔法常数。

谢谢!

2 个答案:

答案 0 :(得分:5)

没有“魔力常数”,因为没有从expx的直接转换(不像转换英寸到厘米)。

ex单位是当前字体中小写“x”字符的高度(其中“font”是字体系列的组合(例如Times New Roman),大小(例如,14px或72pt) )和风格(常规,粗体,斜体))。

...所以72pt Impact Bold中的“1ex”大于8pt Helvetica Regular中的“1ex”。

如果您了解这些详细信息,则可以从ex转换为px。当然,听起来你真的只想要“计算样式”,它总是以像素为单位。阅读:How do I get a computed style?

答案 1 :(得分:4)

没有用于此目的的内置功能。给定使用变量elem在JavaScript中可访问的元素,您可以使用表达式elem.clientWidth获取其宽度(以像素为单位),舍入为整数。为了使其不受限制,精度因浏览器而异,您原则上可以使用elem.getBoundingClientRect().width代替,但实际上它会在许多浏览器中产生舍入结果或不准确的结果。 - 如果元素的水平填充为零,则适用。

如果您将元素的宽度设置为1ex,然后将上面的内容应用于它,您将获得一个整数或实数,告诉您ex的值(以像素为单位) 。但它不是一个神奇的常数:它取决于字体系列和字体大小。

注意:某些旧版浏览器(例如IE 7)错误地将ex单元实现为em单元的一半,而不是正确使用字体的x高度。