var style = window.getComputedStyle(element[, pseudoElt]);
其中pseudoElt
是“指定要匹配的伪元素的字符串” 。伪元素类似于::before
or ::after
,它们是由 CSS 样式生成的元素。:hover
,:visited
或其他类似的效果是伪类。他们不会创建新元素,而是将专门的类样式应用于元素。
不可能获得伪类的计算样式,至少不能使用getComputedStyle
. 但是,您可以遍历 CSS 规则并尝试找到合适的选择器,但我不建议您这样做,因为某些浏览器不会遵循 DOM-Level-2-Style 规则,您必须检查哪个规则将影响您的特定元素:
/* Style */
p a:hover{ color:yellow; background:black;}
p > a:hover{ color:green; background:white;}
p > a+a:hover{ color:fuchsia; background:blue;}
// JS
var i,j, sel = /a:hover/;
for(i = 0; i < document.styleSheets.length; ++i){
for(j = 0; j < document.styleSheets[i].cssRules.length; ++j){
if(sel.test(document.styleSheets[i].cssRules[j].selectorText)){
console.log(
document.styleSheets[i].cssRules[j].selectorText,
document.styleSheets[i].cssRules[j].style.cssText
);
}
}
}
结果:
pa:悬停颜色:黄色;背景:无重复滚动 0% 0% 黑色;
p > a:悬停颜色:绿色;背景:无重复滚动 0% 0% 白色;
p > a + a:悬停颜色:紫红色;背景:无重复滚动 0% 0% 蓝色;
也可以看看: