我做了一個覆蓋頁面上某些元素的懸停的函數。它在正常和:懸停效果之間褪色。那對於我不得不在我的CSS文件中創建一個.hover類。我覺得這有點不潔。我怎麼能讀到:hover僞類的內容?閱讀:使用javascript懸停僞類
回答
UPDATE:我以某種方式得到了這個錯誤。下面的例子不起作用。有關說明,請參閱@bfavaretto's comment。
在Firefox,Opera和Chrome或任何其他正確實現window.getComputedStyle
的瀏覽器都非常簡單。你只需要通過「懸停」作爲第二個參數:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style type="text/css">
div {
display: block;
width: 200px;
height: 200px;
background: red;
}
div:hover {
background: green;
}
</style>
</head>
<body>
<div></div>
<script type="text/javascript">
window.onload = function() {
var div = document.getElementsByTagName("div")[0];
var style = window.getComputedStyle(div, "hover");
alert(style.backgroundColor);
};
</script>
</body>
</html>
但我不相信有尚未爲Internet Explorer的解決方案,除了使用因此,擁有document.styleSheets
作爲濃湯建議。但會有分歧。.hover
類是迄今爲止最好的解決方案。根本不是不乾淨。
您可以訪問document.styleSheets
並查找應用於該特定元素的規則。但是這並不比使用簡單的附加類更清潔。
樣式表不在document.styleSheets可用。 – 2013-02-11 12:01:40
如果有這裏的任何人誰使用接受的答案的問題,但它不會工作,這裏是一個不錯的功能可能:
function getPseudoStyle(id, style) {
var all = document.getElementsByTagName("*");
for (var i=0, max=all.length; i < max; i++) {
var targetrule = "";
if (all[i].id === id) {
if(all[i].selectorText.toLowerCase()== id + ":" + style) { //example. find "a:hover" rule
targetrule=myrules[i]
}
}
return targetrule;
}
}
這也行不通,請檢查我的答案。 – bfavaretto 2012-09-27 19:52:58
代碼中的「myrules」是什麼? – 2015-05-27 23:23:14
使用getComputedStyle
作爲公認的答案是行不通的,因爲:
- 只有當元素實際處於該狀態時,懸停狀態的計算樣式纔可用。
getComputedStyle
的第二個參數應該爲空或僞元素。它不適用於:hover
,因爲它是僞類。
下面是一個替代的解決方案:從外部文件加載
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'));
- 1. CSS僞類懸停屬性
- 2. 未知僞元素或僞類:懸停
- 3. 僞類懸停在JavaScript中不起作用ImageSwap
- 4. 什麼是更便攜:僞類「:懸停」或jQuery的「懸停()」?
- 5. CSS懸停僞類的問題時,「離開懸停」
- 6. 使用javascript懸停
- 7. CSS懸停僞類和畫布交互?
- 8. 僞類:懸停不會在IE7
- 9. 在CSS僞類上懸停狀態
- 10. CSS邊框和:懸停動態僞類
- 11. 如何修復IE9的懸停僞類
- 12. 離開懸停的CSS僞類
- 13. css僞類沒有顯示或懸停
- 14. CSS僞類:懸停不工作
- 15. 我應該使用:懸停CSS僞類還是hover()jQuery方法?
- 16. 使用scss在父類上懸停僞元素
- 17. 如何避免CSS懸停同時應用css邊框與懸停僞類
- 18. 使用Javascript懸停圖像覆蓋懸停使用
- 19. 僞a:懸停&a:懸停:在同一時間只使用CSS之前
- 20. 將懸停僞類僅應用於鏈接的字母?
- 21. 閱讀和使用純JavaScript
- 22. 如何使用懸停css僞只適用於頂級元素?
- 23. 懸停時設置僞元素
- 24. 僞造WPF鼠標懸停可能嗎?
- 25. 從懸停中排除僞元素
- 26. 懸停在懸停jQuery的/ javascript的
- 27. 在鼠標懸停使用JavaScript
- 28. 使用JavaScript事件模擬懸停
- 29. Selenium 2.0 WebDriver&的一個解決方法:懸停僞類
- 30. 懸停僞類上的雙邊框大小
thx!也許它不是不乾淨的,但是使用我的功能的人必須知道他必須在課堂上做。避免這種情況會很好。 – meo 2009-08-16 20:17:40
@david,出於好奇,你將如何處理IE問題? – 2009-08-16 20:19:50
@Ionut:這是一些瀏覽器不一致的好例子,不值得您花時間修復。如果有人使用劣質的瀏覽器,他們仍然會得到一個工作的網站,它不會有很好的觸摸。 – nickf 2009-08-17 06:40:41