2008/11/12

counter-increment, counter-reset

counter-reset | counter-increment

這兩個特徵用在計數器,作文章章節的自動編號。IE6 沒支援計數器;IE8, Firefox3.0, Safari, Chrome 都有支援。

counter-reset

宣告重設 計數器的條件;如果一個條件式同時增加與重設計數器時,會先重設計數器再增加其值。可設定的值有:

  1. identifier integer:指定計數器名稱與整數重設值。可以不設重設值,用預設的值 0。可以一次宣告多個計數器名稱與其重設值。
  2. none:無計數器。
  3. inherit:繼承父元素的特徵值。

讀取計數器值的語法是:

counter(計數器名稱, list-style-type)

list-style-type 指定編號的型態;可不設 list-style-type,使用預設的數字編號。可用在 content 之後,輸出計數器的值。

counter-increment

宣告增加計數器的條件,可設定的值有:

  1. identifier integer:指定計數器名稱與整數增加值。可以不設增加值,用預設的值 1。可以一次宣告多個計數器名稱與其增加值。可用 0 與負值。
  2. none:無計數器。
  3. inherit:繼承父元素的特徵值。

如果一個條件式同時改變計數器值,又要取其值,則會先改變其值。同一個元素要重設多個計數器時,要寫在一個條件式中;如果寫在多個條件式,則後面的條件式會取代前面的條件式,造成前面的條件式沒有執行。

測試一個計數器。一個元素被設為 display:none,則該元素對計數器沒有影響。

測試三個計數器。下面設了三個計數器,所以看起來挺複雜的,細心看懂就全懂了。

元素有 多層巢狀結構時,其宣告的計數器,會在每一層產生一個計數器。讀取計數器值的語法是:

counters(計數器名稱, 分隔字, list-style-type)

可不設 list-style-type,使用預設的數字編號。counters() 會將所有的計數器值列出,用分隔字分開。

  • 實際使用後發現:IE8 必須有宣告 !DOCTYPE 才能用計數器;Firefox, Safari, Chrome 沒有這個限制。!DOCTYPE 如下:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

  • 我在 TABLE 元素使用計數器時,還遇到一個問題。我用了下面的選擇器: 結果在 IE8 會出錯,一直出現 1;Firefox, Safari, Chrome 可以正常執行。後來改成: 就都可以執行了。不知道原因出在哪?

:HOVER, :ACTIVE 的應用。使用時要注意,在 IE6 中 :HOVER, :ACTIVE 只能用在 ANCHOR 元素。

  • 上例,Firefox 完全成功;Safari, Chrome 沒有增加值。