las*_*hou 11 javascript dom css-selectors
window.getComputedStyle
根据文档,该函数应该能够获得计算的伪类样式,如:hover .
它也被解释为另一个问题的答案
但正如最后一条评论在该问题中所说的那样,事实上它根本不起作用,它只返回正常的风格,而不是:悬停风格.你可以在这个jsfiddle中看到自己.警报返回红色,而不是绿色.
developer.mozilla.org上的文档也有一个例子,但这也不起作用 - 见这里.
在这个问题中,回答者在评论中指出它根本不起作用,但没有给出解释.
可能是在函数返回正确的值之前必须完全呈现样式表吗?我试过设置一些延迟,但似乎没有任何工作.
我尝试过最新的Firefox,Chrome和IE浏览器.有人知道为什么这个功能没有按预期工作吗?
Zet*_*eta 13
var style = window.getComputedStyle(element[, pseudoElt]);
Run Code Online (Sandbox Code Playgroud)
其中pseudoElt
是"指定要匹配的伪元素的字符串".伪元素类似于::before
或者::after
,那些是由CSS样式生成的元素.:hover
,:visited
或其他类似的影响是pseuodo- 类.它们不会创建新元素,而是将专门的类样式应用于元素.
获取伪类的计算样式是不可能的,至少不能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;}
Run Code Online (Sandbox Code Playgroud)
// 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
);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Result: p a:hover color: yellow; background: none repeat scroll 0% 0% black; p > a:hover color: green; background: none repeat scroll 0% 0% white; p > a + a:hover color: fuchsia; background: none repeat scroll 0% 0% blue;
也可以看看:
归档时间: |
|
查看次数: |
4032 次 |
最近记录: |