CSS 2.1 快速導覽 - 規格

規格 (specificity) 是三個逗號區隔的四組數字,用來計算 HTML 元素 (element) 規則 (rule) 的優先性




我們將四個數字依順序以 a 、 b 、 c 、 d 四個變數代替,例如
/* a=0 b=0 c=0 d=0 -> specificity = 0,0,0,0 */


原則上 a > b > c > d ,因此 1,0,0,0 勝於 0,1,0,0 ,也勝於 0,0,1,13 等。


已下列出 a 、 b 、 c 、 d 各自的條件
a
當 HTML 元素有設定 style 屬性 (attribute) 時, a=1 。


b
具有 ID 選取項 (ID selector) ,也就是井字號 # , b=1 。


c
有類別選取項 (class selector) 、屬性選性項 (attribute selector) 、擬類別選取項 (pseudo-class selector) 任一個之時, c+=1 ,也就是有一個 c 就遞增一。


d
有 HTML 元素或擬元素選取項任一個之時, d+=1 ,也就是有一個 d 就遞增一。


下面為 W3C 的 Calculating a selector's specificity 舉出的例子
*             {}  /* a=0 b=0 c=0 d=0 -> specificity = 0,0,0,0 */
li            {}  /* a=0 b=0 c=0 d=1 -> specificity = 0,0,0,1 */
li:first-line {}  /* a=0 b=0 c=0 d=2 -> specificity = 0,0,0,2 */
ul li         {}  /* a=0 b=0 c=0 d=2 -> specificity = 0,0,0,2 */
ul ol+li      {}  /* a=0 b=0 c=0 d=3 -> specificity = 0,0,0,3 */
h1 + *[rel=up]{}  /* a=0 b=0 c=1 d=1 -> specificity = 0,0,1,1 */
ul ol li.red  {}  /* a=0 b=0 c=1 d=3 -> specificity = 0,0,1,3 */
li.red.level  {}  /* a=0 b=0 c=2 d=1 -> specificity = 0,0,2,1 */
#x34y         {}  /* a=0 b=1 c=0 d=0 -> specificity = 0,1,0,0 */
style=""          /* a=1 b=0 c=0 d=0 -> specificity = 1,0,0,0 */


假如我們有以下的 CSS 檔案
#x34y {
    color: green;
}
 
/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:demo45.css
    功能:示範 CSS 2.1 樣式表的使用 
    作者:張凱慶
    時間:西元 2011 年 7 月 */


由以下面的 HTML 文件載入
<html>
<head>
<title>網頁標題</title>
<link rel="stylesheet" type="text/css" 
      href="demo45.css">
</head>
<body>
<p>You ever have that feeling where you're not sure if 
you're awake or still dreaming?</p>
<p>A prison for your mind.</p>
<p id="x34y" style="color: red;">Free your mind.</p>
<p>Believe the unbelievable.</p>
<p>There is no spoon.</p>
<p>I can only show you the door, you have to walk 
through it.</p>
<p>Choice. The problem is choice.</p>
<p>Then tomorrow we may all be dead, but how would that 
be different from any other day?</p>
<p>I have dreamed a dream, but now that dream has gone 
from me.</p>
<p>Choice is an illusion, created between those with 
power, and those without.</p>
<p>Because I choose to.</p>
<p>Everything that has a beginning has an end.</p>
</body>
</html>

<!-- 《程式語言教學誌》的範例程式
     http://pydoing.blogspot.com/
     檔名:demo45.html
     功能:示範 CSS 2.1 樣式表的使用 
     作者:張凱慶
     時間:西元 2011 年 7 月 -->


瀏覽器 (broswer) 開啟如下



雖然 demo45.css 設定的是 id 屬性為 x34y 的元素,該元素卻由於我們另行設定 style 屬性,因此文字顏色依 style 屬性設定的紅色顯示。


中英文術語對照
規格specificity
元素element
規則rule
屬性attribute
ID 選取項ID selector
類別選取項class selector
屬性選性項attribute selector
擬類別選取項pseudo-class selector
瀏覽器broswer


您可以繼續參考

基本概念
單位
選取器
@import 規則
階層
元素呈現方式 display


相關目錄
CSS 2.1 快速導覽
HTML, CSS 教材
首頁


參考資料

http://www.w3.org/TR/CSS21/cascade.html
https://developer.mozilla.org/en/CSS/Getting_Started/Cascading_and_inheritance

沒有留言: