2008/11/17

規則集合

規則集合(Rule sets)用在區塊風格表與外部風格表檔案。規則集合由選擇器與風格定義區塊組成。其語法是:

選擇器 { 風格定義區塊 }

選擇器可設定各種選擇條件,當 HTML 的元素符合選擇條件時,才會採用其定義的風格。風格定義區塊接在選擇器之後,頭尾用兩個”{” ”}”包夾。區塊內含多組特徵與值,特徵與值用”:”相連;兩組特徵與值間用”;”分開。可用”/*”與”*/”加入解說。選擇器在 HTML 文件是不分大小寫;在 XML 則大小寫不同。選擇器的基本語法如下:

* | E | E F | E > F | E:準類別 | E ~ F | E + F | E, F | E[att] | E.name | E#id
*

星號 * 表所有元素。

  • 風格用法:

    <style type='text/css'>
    .c1 * { color:red }
    </style>
    <div class=c1>
    <i>性向測驗</i><br />
    <code>高鐵</code><br />
    <big>台灣大哥大</big>
    </div>

  • 執行結果:

    性向測驗
    高鐵
    台灣大哥大
  • 這個範例用了類別 .c1 ,這是為了與部落格中的元素區分開來。下面的範例也都如此。

E

E 是 HTML 元素的名稱。

  • 風格用法:

    <style type='text/css'>
    .c2 BIG { color:red }
    </style>
    <div class=c2>
    <i>摸摸耳</i><br />
    <code>高鐵</code><br />
    <big>台灣大哥大</big>
    </div>

  • 執行結果:

    摸摸耳
    高鐵
    台灣大哥大

E F

E F是兩個 HTML 元素的名稱,表示當 F 元素是 E 元素的後代時,選擇條件符合。

  • 風格用法:

    <style type='text/css'>
    DIV.c3 EM { color:red }
    </style>
    <div class=c3>
    <em>無名小站</em>
    </div>
    <em>NBA</em>

  • 執行結果:

    無名小站
    NBA

:HOVER, :ACTIVE 的應用。這個練習製作一個下拉式選單。使用時要注意,在 IE6 中 :HOVER, :ACTIVE 只能用在 ANCHOR 元素。

  • 風格用法:

    <style type='text/css'>
    .menu {position:relative;
           float:left;
           width:120px;
           text-align:center;
           border:solid 1px red;
          }
    .menu .list
          {position:absolute;
           display:none;
          }
    .menu:hover .list
          {display:block;
           white-space:pre;
           background:white;
          }
    .menu:active .list
          {background:yellow;}
    </style>
    <div class=menu>
    動作遊戲
    <div class=list><a href='http://gamelily.blogspot.com/2008/11/blog-post_3953.html'>長劍客戰骷髏</a>
    <a href='http://gamelily.blogspot.com/2008/11/blog-post_2534.html'>坦克衝鋒戰</a>
    </div>
    </div>
    <div class=menu>
    競速遊戲
    <div class=list><a href='http://gamelily.blogspot.com/2008/11/blog-post_3232.html'>摩托車飛峽谷</a>
    <a href='http://gamelily.blogspot.com/2008/11/blog-post_430.html'>城市碰碰車</a>
    </div>
    </div>
    <br clear=all>

  • 執行結果:



E > F

E F是兩個 HTML 元素的名稱。E > F 表示當 F 元素是 E 元素的子代時,選擇條件符合。

  • 風格用法:

    <style type='text/css'>
    DIV.c4 > STRONG { color:red }
    </style>
    <div class=c4>
    <strong>台灣銀行</strong><br />
    <p>
    <strong>楓之谷</strong><br />
    </p>
    </div>

  • 執行結果:

    台灣銀行

    楓之谷

  • 上面的例子中,第二個 STRONG 是孫代,所以不符合選擇條件。
  • IE6 失敗;IE8, Firefox3.0, Safari, Chrome 都成功。

E:active
E:first-child
E:focus
E:hover
E:lang
E:link
E:visited

以上規則,請參考說明與範例


E ~ F

E F是兩個 HTML 元素的名稱。表示 F 元素在 E 元素之後,且 F 元素與 E 元素有相同的父元素,則選擇條件符合。

  • 風格用法:

    <style type='text/css'>
    .sib I ~ Q { color:red }
    </style>
    <div class=sib>
    <q>射擊遊戲(在前面)</q><br />
    <i>好玩遊戲(I 元素)</i><br />
    <q>射擊遊戲(兄弟)</q>
    <p><q>射擊遊戲(姪子)</q></p>
    <q>益智遊戲(兄弟)</q>
    </div>
    <q>射擊遊戲(叔叔)</q>

  • 執行結果:

    射擊遊戲(在前面)
    好玩遊戲(I 元素)
    射擊遊戲(兄弟)

    射擊遊戲(姪子)

    益智遊戲(兄弟)
    射擊遊戲(叔叔)
  • IE6 失敗;Firefox, Safari, Chrome 都成功。

:HOVER, :ACTIVE 的應用。這個練習利用滑鼠在三個 I 元素 上的游移,改變 EM 元素 的內容。

  • 風格用法:

    <style type='text/css'>
    .sib2 I#i1:hover ~ EM:after
       {content:'car';
        color:red;
       }
    .sib2 I#i2:hover ~ EM:after
       {content:'computer';
        color:red;
       }
    .sib2 I#i3:hover ~ EM:after
       {content:'network';
        color:red;
       }
    .sib2 I#i1:active ~ EM:after
       {background:white;}
    .sib2 I#i2:active ~ EM:after
       {background:white;}
    .sib2 I#i3:active ~ EM:after
       {background:white;}
    </style>
    <div class=sib2>
    <i id=i1>汽車</i> /
    <i id=i2>電腦</i> /
    <i id=i3>網路</i><br />
    <em>英文:</em>
    </div>

  • 執行結果:

    汽車 / 電腦 / 網路
    英文:
  • Firefox 成功;IE6, Safari, Chrome 失敗。

E + F

E F是兩個 HTML 元素的名稱。表示當 F 元素是直接接在 E 元素的後面時,選擇條件符合。

  • 風格用法:

    <style type='text/css'>
    DIV.c5 + INS { color:red }
    </style>
    <div class=c5>
    <ins>土豆網</ins><br />
    </div>
    <ins>正妹牆</ins>

  • 執行結果:

    土豆網
    正妹牆
  • IE6 失敗;IE8, Firefox3.0, Safari, Chrome 都成功。

E, F

多個選擇器可以使用相同的風格定義區塊,兩個選擇器用","分開。

  • 風格用法:

    <style type='text/css'>
    I.c01, CODE.c02 { color:red }
    </style>
    <i class=c01>土豆網</i><br />
    <code class=c02>正妹牆</code>

  • 執行結果:

    土豆網
    正妹牆

E[att]
E[att=val]
E[att~=val]
E[att|=val]
E[att^=val]
E[att$=val]
E[att*=val]

以上規則,請參考說明與範例


E.name

只能用在 HTML 文件,用”.”表示類別。E.name 表示 HTML 元素 E 的 CLASS 屬性設為 name 時,選擇條件符合。*.name 可省略寫成 .name。類別定義可以用來將元素分類,用不同的展現風格。

  • 風格用法:

    <style type='text/css'>
    .girl  {background:red}
    .boy   {background:blue}
    </style>
    <i class=girl>蔡依林</i> /
    <i class=boy>吳宗憲</i> /
    <i class=girl>林志玲</i> /
    <i class=boy>周杰倫</i>

  • 執行結果:

    蔡依林 / 吳宗憲 / 林志玲 / 周杰倫

E#id007

用”#”宣告 ID。E#id007 表示元素的 ID 為 id007 時,選擇條件符合。由於 ID 在網頁中有唯一性,所以通常不加元素名稱。

  • 風格用法:

    <style type='text/css'>
    #hot  { color:red; width:200px; background:gray }
    </style>
    <div id=hot>
    墨西哥水怪, 胡啟志, 雞腿王盒餐, 京台公路, 余筱萍, 曾馨瑩, 武昌排骨館,
    何芊毅, 歐巴馬, 柴璐, 台灣之歌, 陳雲林, 小室哲哉, 消防猛男月曆, 蘇治芬, 台東海生館
    </div>

  • 執行結果:

    墨西哥水怪, 胡啟志, 雞腿王盒餐, 京台公路, 余筱萍, 曾馨瑩, 武昌排骨館, 何芊毅, 歐巴馬, 柴璐, 台灣之歌, 陳雲林, 小室哲哉, 消防猛男月曆, 蘇治芬, 台東海生館