function getCssPropertyForRule(rule, prop) {
var sheets = document.styleSheets;
var slen = sheets.length;
for(var i=0; i<slen; i++) {
var rules = document.styleSheets[i].cssRules;
var rlen = rules.length;
for(var j=0; j<rlen; j++) {
if(rules[j].selectorText == rule) {
return rules[j].style[prop];
}
}
}
}
// Get the "color" value defined on a "div:hover" rule,
// and output it to the console
console.log(getCssPropertyForRule('div:hover', 'color'));
5条答案
按热度按时间wgxvkvu91#
使用
getComputedStyle
作为已接受的答案将不起作用,因为:1.悬停状态的计算样式仅在元素实际处于该状态时可用。
getComputedStyle
的第二个参数应该是空的或者是伪元素。它不适用于:hover
,因为它是一个伪类。下面是一个替代解决方案:
Demo
ajsxfq5m2#
您可以访问
document.styleSheets
并查找应用于该特定元素的规则,但这并不比使用一个简单的附加类更简洁。kuuvgm7e3#
UPDATE:我不知怎么搞错了。下面的例子不起作用。请查看@bfavaretto的评论以获得解释。
在Firefox、Opera和Chrome或其他任何正确实现
window.getComputedStyle
的浏览器中,实现window.getComputedStyle
非常简单,你只需要传递“hover”作为第二个参数:但是我不相信现在还有一个针对Internet Explorer的解决方案,除了像Gumbo建议的那样使用
document.styleSheets
。但是会有区别。所以,有一个.hover
类是目前为止最好的解决方案。一点也不脏。cczfrluj4#
如果这里有人使用问题接受答案,但它不起作用,这里有一个很好的函数,可能:
jjhzyzn05#
有一个替代的方法可以用javascript得到
:hover
伪类。你可以在content
属性中写你的hover
伪类的样式。然后通过getComputedStyle()方法从其中读取: