【发布时间】:2016-03-09 19:32:33
【问题描述】:
如何在 JavaScript 中为 HTML 元素获得最终的、最终的、继承后的样式值?我已经知道element.style 只获取内联样式,而getComputedStyle() 只对内联样式进行基本转换(它似乎没有从样式表继承任何东西)。如何获取继承的样式值?
我不想使用 jQuery(因为我知道纯 JavaScript 解决方案是可能的,尽管 jQuery 已经在我的应用程序中使用)。我不知道样式表配置是什么提前,因为表单正在与SASS一起编译。
我的具体情况是,我试图从样式表中为基于画布的绘图任务获取业务定义的颜色,并且颜色在 CSS 中定义。我目前正在尝试使用如下代码来提取我的实体。
var testElement = document.createElement("span");
var entity_type_color_table = {};
function getEntityTypeColor(entity_type) {
if (!entity_type_color_table[entity_type]) {
testElement.className = entity_type + "-color";
entity_type_color_table[entity_type] =
document.defaultView.getComputedStyle(testElement, null)
.getPropertyValue("color");
}
return entity_type_color_table[entity_type];
}
【问题讨论】:
-
我想你可能只想使用 jQuery 来解决这个问题。通过使用 .css()。原因是 jQuery 已经处理了很多浏览器的不一致问题。
-
我注意到您使用的是
document.createElement('span');。当我用适当的 DOM 节点替换它时(请参阅:jsfiddle.net/12dsjur3),它会正确返回颜色。这可能是您没有看到来自getComputedStyle的任何值的原因吗? -
您知道您可以使用 document.styleSheets[0].cssRules 读取特定样式表的规则
标签: javascript html css