所以我正在阅读elem.style.width,并获得类似“3.1415926ex”的内容。
我想将其转换为“px。”
JavaScript是否已内置函数来执行此操作?我宁愿砍下最后2个字母的字符串,将其读作数字,然后乘以魔法常数。
谢谢!
答案 0 :(得分:5)
没有“魔力常数”,因为没有从ex
到px
的直接转换(不像转换英寸到厘米)。
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高度。