CSS 選擇器權重計算規則
其實,CSS有自己的優先順序計算公式,而不僅僅是行間>內部>外部樣式;ID>class>元素。
一、樣式型別
1、行間
<h1 style="font-size:12px;color:#000;">我的行間CSS樣式。</h1>
2、內聯
<style type="text/css"> h1{font-size:12px; color:#000; } </style>
3、外部
<link rel="stylesheet" href="css/style.css">
二、選擇器型別
1、ID #id
2、class .class
3、標籤 p
4、通用 *
5、屬性 [type="text"]
6、偽類 :hover
7、偽元素 ::first-line
8、子選擇器、相鄰選擇器
三、權重計算規則
- 第一等:代表內聯樣式,如: style=””,權值為1000。
- 第二等:代表ID選擇器,如:#content,權值為0100。
- 第三等:代表類,偽類和屬性選擇器,如.content,權值為0010。
- 第四等:代表型別選擇器和偽元素選擇器,如div p,權值為0001。
- 萬用字元、子選擇器、相鄰選擇器等的。如*、>、+,權值為0000。
- 繼承的樣式沒有權值。
四、比較規則
- 1,0,0,0 > 0,99,99,99。也就是說從左往右逐個等級比較,前一等級相等才往後比。
- 無論是行間、內部和外部樣式,都是按照這個規則來進行比較。而不是直觀的行間>內部>外部樣式;ID>class>元素。之所以有這樣的錯覺,是因為確實行間為第一等的權重,所以它的權重是最高的。而內部樣式可能一般寫在了外部樣式引用了之後,所以覆蓋掉了之前的。
- 在權重相同的情況下,後面的樣式會覆蓋掉前面的樣式。
- 萬用字元、子選擇器、相鄰選擇器等的。雖然權值為0000,但是也比繼承的樣式優先。
五、!important
- !important
的作用是提升優先順序,換句話說。加了這句的樣式的優先順序是最高的(比內聯樣式的優先順序還高)。
<style> p{ color:red !important; } </style> <p style="color:blue;">我顯示紅色</p>
- ie7+和別的瀏覽器對important的這種作用的支援度都很好。只有ie6有些bug
p{ color:red !important; color:blue; }//會顯示blue
但是這並不說明ie6不支援important,只是支援上有些bug。看下面
p{ color:red !important; } p{ color:blue; } //這樣就會顯示的是red。說明ie6還是支援important的。
六、例項
-
a{color: yellow;} /*特殊性值:0,0,0,1*/ div a{color: green;} /*特殊性值:0,0,0,2*/ .demo a{color: black;} /*特殊性值:0,0,1,1*/ .demo input[type="text"]{color: blue;} /*特殊性值:0,0,2,1*/ .demo *[type="text"]{color: grey;} /*特殊性值:0,0,2,0*/ #demo a{color: orange;} /*特殊性值:0,1,0,1*/ div#demo a{color: red;} /*特殊性值:0,1,0,2*/ <a href="">第一條應該是黃色</a> <!--適用第1行規則--> <div class="demo"> <input type="text" value="第二條應該是藍色" /><!--適用第4、5行規則,第4行優先順序高--> <a href="">第三條應該是黑色</a><!--適用第2、3行規則,第3行優先順序高--> </div> <div id="demo"> <a href="">第四條應該是紅色</a><!--適用第5、6行規則,第6行優先順序高--> </div>
-
一、優先順序分類
通常可以將css的優先順序由高到低分為6組:
- 第一優先順序:無條件優先的屬性只需要在屬性後面使用!important。它會覆蓋頁面內任何位置定義的元素樣式。ie6不支援該屬性。
- 第二優先順序:在html中給元素標籤加style,即內聯樣式。該方法會造成css難以管理,所以不推薦使用。
- 第三優先順序:由一個或多個id選擇器來定義。例如,#id{margin:0;}會覆蓋.classname{margin:3pxl}
- 第四優先順序:由一個或多個類選擇器、屬性選擇器、偽類選擇器定義。如.classname{margin:3px}會覆蓋div{margin:6px;}
- 第五優先順序:由一個或多個型別選擇器定義。如div{marigin:6px;}覆蓋*{margin:10px;}
- 第六優先順序:通配選擇器,如*{marigin:6px;}
-
三、優先順序不起作用
如果遇到了似乎沒有起作用的css規則,很可能是出現了特殊性衝突。這時可以在選擇器中新增他的一個父元素的id,從而提高他的特殊性。如果這能解決問題,就說明樣式表中其他地方很可能有更特殊的規則,他覆蓋了你的規則。此時需要檢查程式碼,解決特殊性衝突,讓程式碼儘可能的簡潔。
轉自: http://www.cnblogs.com/dq-Leung/p/4213375.html
相關文章
- css選擇器權重和超越`!important`CSSImport
- css 選擇器及權重筆記CSS筆記
- CSS 選擇器優先順序規則CSS
- CSS 選擇器權值CSS
- CSS 選擇器命名規範CSS
- CSS 基礎(盒模型、選擇器、權重、優先順序)CSS模型
- CSS選擇器CSS
- 重學前端筆記21-css選擇器前端筆記CSS
- CSS選擇器(一)CSS
- CSS常用選擇器CSS
- CSS 元素選擇器CSS
- CSS :valid 選擇器CSS
- CSS :required 選擇器CSSUI
- CSS :optional 選擇器CSS
- css選擇器概述CSS
- CSS id選擇器CSS
- 一個帶有權重的隨機選擇器隨機
- 12.8學習日報(背景簡寫、選擇器繼承性、選擇器的權重)繼承
- 【小技巧】巧用CSS屬性值正則匹配選擇器CSS
- MySQL索引選擇及規則整理MySql索引
- CSS3選擇器02—CSS3部分選擇器CSSS3
- Debug: 樣式規則、元素選擇器 錯誤嵌用
- CSS 偽類選擇器CSS
- CSS 常見選擇器CSS
- [CSS]屬性選擇器CSS
- CSS 選擇器詳解CSS
- CSS基礎選擇器CSS
- CSS E:link 選擇器CSS
- CSS E:enabled 選擇器CSS
- CSS E:focus 選擇器CSS
- CSS E,F 選擇器CSS
- css child選擇器妙用CSS
- css 選擇器基礎CSS
- CSS E[att]選擇器CSS
- CSS E:active 選擇器CSS
- CSS E:visited 選擇器CSS
- CSS class 類選擇器CSS
- 重學前端筆記22-css 選擇器機制前端筆記CSS
- CSS3新增選擇器(屬性選擇器、結構偽類選擇器、偽元素選擇器)CSSS3