1. 程式人生 > >JavaScript指令碼化CSS樣式表

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方法的引數為選擇器文字和樣式文字分別作為引數傳遞。