d3:selection.style(' font-size')总是会返回px中的值吗?

时间:2017-04-29 23:56:13

标签: javascript css d3.js

文档只是说selection.style返回"当前计算值"。

我尝试使用rem在css中指定元素的字体大小,而style('font-size')似乎在px中返回相应的大小(例如'10.2px')。

这是一种我可以依赖浏览器的行为,无论css中指定了font-size的单位是什么?

1 个答案:

答案 0 :(得分:3)

要回答您的问题,请查看selection.style源代码:

export default function(name, value, priority) {
    var node;
    return arguments.length > 1
      ? this.each((value == null
            ? styleRemove : typeof value === "function"
            ? styleFunction
            : styleConstant)(name, value, priority == null ? "" : priority))
      : defaultView(node = this.node())
          .getComputedStyle(node, null)
          .getPropertyValue(name);
}

如您所见,它确实使用getComputedStyle

阅读有关getComputedStyle的MDN文档,我们可以读到:

  

getComputedStyle返回的值称为已解析值。这些通常与CSS 2.1计算值相同,但对于某些较旧的属性(如宽度,高度或填充),它们是使用的值。

然后,跳转到关于computed values的文档,我们可以读到:

  

达到属性计算值所需的计算通常涉及将相对值(例如以em单位或百分比表示的那些)转换为绝对值。 (强调我的)

因此,由于Chrome,Edge,Firefox,Internet Explorer,Opera和Safari支持(基本)getComputedStyle,我们可以说您问题的答案("这是一个我可以依赖跨浏览器的行为?" )似乎