2008-12-24 21 views
0

是否可以通過Javascript確定CSS文件中的樣式?查找非活動CSS屬性

我試圖檢測將應用於某個狀態下的元素的CSS屬性,在這種情況下爲:hover,但沒有當前在元素上處於活動狀態的屬性。我曾考慮克隆元素,將該克隆追加爲display: none,並以這種方式查詢屬性,但我不知道如何通過Javascript強制使用:hover樣式。有任何想法嗎?

回答

0

懸停樣式由瀏覽器應用,取決於鼠標移動。我不認爲你可以通過JS強制它。但你爲什麼想要?只需定義另一個CSS類,並通過JS中的className屬性進行分配。

+0

備選:一:懸停,.myAnchorHoverClass {/ *我的CSS * /} 然後就通過JavaScript – 2008-12-24 17:05:01

+0

感謝的Martijn適用myAnchorHoverClass,那是一個很好的建議。我想保留:非JS降級的懸停,以及一些WebKit轉換。 – roryf 2008-12-24 17:50:51

0

要確定風格throught JS,你可以使用的className這樣做e.g:

item.onmouseover = gohover;

item.onmouseout = nohover;

功能gohover(){this.className = gClass;}

...

0

如果我正確理解你的問題,好像你正在尋找的是一個XPath對於CSS(僞)類。除了使用Ajax獲取CSS文件和使用正則表達式搜索外,我還沒有意識到從CSS文件中檢索樣式信息的方法。

3

我相信你有興趣的styleSheets陣列是documentdocument.styleSheets)這個數組的索引被當前頁面引用的樣式表的屬性,並允許您遍歷所有的樣式規則中的每個片。用於訪問css規則的W3C陣列(Firefox,Opera,Safari)爲cssRules,而微軟的陣列爲rules。下面的代碼片段從www.quirksmode.org採取:

 
var theRules = new Array(); 
if (document.styleSheets[1].cssRules) 
    theRules = document.styleSheets 1 .cssRules 
else if (document.styleSheets[1].rules) 
    theRules = document.styleSheets 1 .rules 

現在theRules包含了文檔的第二個樣式表的規則。請參閱quirksmode的referencecompatibility tables以獲取有關從JavaScript訪問CSS規則的更多信息。