因此,我正在阅读elem.style.width,并得到类似于"3.1415926ex“的内容。
我想把它转换成“px”。
JavaScript有内置的函数来做这件事吗?我更喜欢砍掉字符串的最后两个字母,把它读成一个数字,然后乘以一个神奇的常量。
谢谢!
发布于 2012-09-18 13:44:58
没有“神奇常数”,因为不存在从ex
到px
的直接转换(例如,不同于将英寸转换为厘米)。
字体单位是当前字体中小写“x”字符的高度(其中“ex
”是字体系列(例如Times New Roman)、大小(例如14px或72pt)和样式(常规、粗体、斜体)的组合)。
72pt Impact Bold中的...so "1ex“大于8pt Helvetica Regular中的"1ex”。
如果你知道这些细节,就可以完成从ex
到px
的转换。当然,听起来你真的只是想要“计算风格”,它总是以像素为单位。请阅读:How do I get a computed style?
发布于 2013-12-09 15:46:56
没有用于此目的的内置函数。给定一个可以使用变量elem
在JavaScript中访问的元素,可以使用表达式elem.clientWidth
以像素为单位获取其宽度,并将其四舍五入为整数。要使结果不四舍五入,精度因浏览器而异,原则上可以改用elem.getBoundingClientRect().width
,尽管在许多浏览器中,它在实践中会产生四舍五入的结果或不准确的结果。-如果元素的水平填充为零,则适用。
如果您将一个元素的宽度设置为1ex
,然后将上面的值应用于它,您将得到一个整数或实数,它告诉您ex
的值(以像素为单位)。但它不是一个神奇的常量:它取决于字体系列和字体大小。
注意:一些旧的浏览器,如IE7,错误地将ex
单位实现为em
单位的一半,而不是正确地使用字体的x高度。
https://stackoverflow.com/questions/12470954
复制相似问题