我编写了一个小函数,该函数遍历文档上的样式表以查找匹配的选择器,然后查找样式。
需要注意的是,这仅适用于使用样式标签定义的样式表或同一域中的外部表。
如果知道工作表,则可以将其传递进来,从而不必再查看多个工作表(更快,并且如果您有冲突规则,则更为准确)。
我只在jsFiddle上测试了一些较弱的测试用例,请让我知道这是否适合您。
function getStyleRulevalue(style, selector, sheet) { var sheets = typeof sheet !== 'undefined' ? [sheet] : document.styleSheets; for (var i = 0, l = sheets.length; i < l; i++) { var sheet = sheets[i]; if( !sheet.cssRules ) { continue; } for (var j = 0, k = sheet.cssRules.length; j < k; j++) { var rule = sheet.cssRules[j]; if (rule.selectorText && rule.selectorText.split(',').indexOf(selector) !== -1) { return rule.style[style]; } } } return null;}用法示例:
var color = getStyleRulevalue('color', '.foo'); // searches all sheets for the first .foo rule and returns the set color style.var color = getStyleRulevalue('color', '.foo', document.styleSheets[2]);编辑:
我忽略了考虑分组规则。我将选择器检查更改为此:
if (rule.selectorText.split(',').indexOf(selector) !== -1) {现在它将检查分组规则中的任何选择器是否匹配。



