JavaScript指令碼化CSS樣式表
在使用JavaScript指令碼化操作CSS樣式表的時候,必須要使用到兩個物件:
1,元素物件:也就是<link>元素與<style>元素。
2,CSSStyleSheet物件:與當前文件關聯的在一起的樣式表,通過document.styleSheets獲取,該物件是隻讀的類陣列物件(由CSSStyleSheet物件組成的類陣列)。
注:可以通過在<link>與<style>元素中新增title屬性,這樣返回的CSSStyleSheet物件中的title屬性可以與之對應起來。
開啟和關閉樣式表:
每個CSSStyleSheet物件都有一個disabled屬性,可以用來查詢樣式表是否在使用,false時表示該樣式表在使用,true時表示瀏覽器關閉忽略該樣式表,因此,可以通過將disabled屬性設定為true,來關閉指定樣式表的應用。
.box{ width:600px; height:600px; border:3px solid black; } .box2{ width:300px; height:300px; border:2px solid red; } .box3{ width:100px; height:100px; border:1px solid skyblue; }
<body> <div class="box" style="margin:20px;position: relative;"> <div class="box2" style="position: absolute;padding: 20px;"> <div class="box3" style="-webkit-clip:rect(0px 50px 50px 50px);background-color: skyblue"></div>6666666</div> </div> <button onclick="test()">取消</button> </body>
function test(){ document.styleSheets[0].disabled = true; }
點選取消按鈕前:
點選取消按鈕後:
樣式表的其他操作:
document.styleSheets陣列由CSSStyleSheet物件組成,在標準API中,每個CSSStyleSheet物件都有一個cssRules陣列(由CSSStyleRule物件組成),包含了樣式表的所有規則(IE中為rules)。
可以在style屬性中直接修改規則。
標準API中還定義了insertRule()與deleteRule()方法來新增和刪除規則。
新增一條規則:document.styleSheets[0].insertRule("h1{border:1px solid red;}",0);
刪除一條規則:document.styleSheets[0].deleteRule(要刪除的CSSStyleRule陣列的下標);
IE不支援這兩個方法,它有自己的實現方法:addRule(),removeRulr()。和標準API唯一的不同就是addRule方法的引數為選擇器文字和樣式文字分別作為引數傳遞。