CSS Counter Style試玩兒

2015年2月3日,CSS Counter Style level3成為了W3C的候選標準,是時候來一探究竟,看看強大魔力的@counter-style如何自定義list-style和counter。進來一坐,且聽慶哥分解。

強大魔力

使用CSS Counter Style可以做什么,來看看慶哥做的簡單案例。當然,如果要發(fā)揮最大魔力,需要您的美好創(chuàng)意,這不是哥的特長,就不獻丑了,歡迎各位通過留言提交您的創(chuàng)意。

這里寫圖片描述
這里寫圖片描述

這里寫圖片描述
這里寫圖片描述

這里寫圖片描述
這里寫圖片描述

這里寫圖片描述
這里寫圖片描述

這里寫圖片描述
這里寫圖片描述

這里寫圖片描述
這里寫圖片描述

需要注意的是,目前僅有firefox瀏覽較好的支持@counter-style。我依然把代碼放到了codepen,請大家自由選擇-在線研究-or-下載收藏-。
使用@counter-style命令,我們可以自定義列表樣式,可以用在list-style、counter、counters等上。

結(jié)構(gòu)解析

定義一個counter-style的典型格式如下:

@counter-style counter名字{
     system  : 算法;
     range   : 使用范圍;
     symbols : 符號; or additive-symbols: 符號
     prefix  : 前綴;
     suffix  : 后綴;
     pad     : 補零(eg. 01,02,03);
     negative: 負數(shù)策略;
     fallback: 出錯后的默認值;
     speakas : 語音策略;
}

上面詳細列出了@counter-style的所有命令,大部分情況下,我們只需要使用其中幾個命令即可,例如實現(xiàn)“天干編號”的命令如下。

@counter-style cjk-heavenly-stem {
  system: alphabetic;
  symbols: "\7532" "\4E59" "\4E19" "\4E01" "\620A" "\5DF1" "\5E9A" "\8F9B" "\58EC" "\7678";
  /* 甲 乙 丙 丁 戊 己 庚 辛 壬 癸 */
  suffix: "、";
}

接下來我們來簡要看看各個命令的用法。

算法-system

命令 意義 可接受值 默認值
system 符號生成算法 cyclic 、 numeric 、 alphabetic 、 symbolic 、 additive 、 [fixed <integer>?] 、 [ extends <counter-style-name> ] symbolic

算法詳細解釋如下表所說。

參數(shù) 意義 示例代碼 表現(xiàn)方式
cyclic 循環(huán)使用符號 system: cyclic; symbols:'a' 'b' 'c'; a,b,c,a,b,c,a
fixed 只用一遍符號,數(shù)字表示開始使用的位置 system: fixed 3; symbols:'a' 'b' 'c' 'd'; 1,2,a,b,c,d,7
symbolic 循環(huán)使用符號,第二遍雙倍重復(fù) system:symbolic; symbols:'a' 'b' 'c'; a,b,c,aa,bb,cc,aaa
alphabetic 類似于小寫字母循環(huán) system:alphabetic; symbols:'a' 'b' 'c'; a,b,c,aa,ab,ac,ba
numeric 類似于數(shù)字進制 system:alphabetic; symbols:'a' 'b' 'c'; b,c,c,ba,bb,bc,ca,cb
additive 類似于羅馬數(shù)字的編號系統(tǒng) system:additive; additive-symbols: c 3, b 2, a 1; a,b,c,ca,cb,cc,cca
extends 繼承其他編號系統(tǒng) system: extends decimal; suffix: ') '; 1),2),3),4),5),6),7)

使用范圍-range

指定自定義符號系統(tǒng)的使用范圍,超出范圍外的將采用fallback指定的默認編號。
可以使用[ [ <integer> | infinite ]{2} ]或 auto兩種形式指定range范圍,auto為默認值。
auto在不同system下的含義如下列表所示:

  • 在cyclic、numeric、fixed算法下,auto表示從負無窮到正無窮
  • 在alphabetic、symbolic算法下,auto表示從1到正無窮
  • additive算法下,auto表示從0到正無窮
  • extend算法下,auto取繼承的父系統(tǒng)的取值范圍,如果為預(yù)定義的復(fù)雜系統(tǒng),取預(yù)定義的取值

下面的示例都是正確的范圍指定。

/*指定范圍為auto,默認值*/
range: auto;
/*指定范圍為兩個數(shù)字:前面表示下限,后面表示上限,兩個數(shù)字都包含在內(nèi),列表之間用逗號隔開*/
range: 1 6;
range: 1 2,4 6;
/*指定范圍為關(guān)鍵字*/
range: infinite;   /*從負無窮到正無窮*/
range: infinite 4; /*從負無窮到4*/
range: -6 infinite;/*從-6到正無窮*/

使用符號-symbols和additive-symbols

這是自定義counter-style中非常重要的屬性,在 cyclic、numeric、alphabetic、symbolic、fixed等算法中必須指定symbols屬性,在additive算法中必須指定additive-symbols。

使用前后綴-prefix和suffix

prefix的默認自為“ ”,suffix的默認值為"\2E\20",一個點加一個空格。

使用補零策略-pad

pad可以讓開發(fā)者指定固定寬度的符號系統(tǒng),例如三位的數(shù)字系統(tǒng),001, 002,……,100, 101等。
pad指定的格式為 pad <integer> && <symbol>,例如 pad 3 "0"等。

匿名counter-style-symbols()函數(shù)

symblos函數(shù)將創(chuàng)建一個沒有名字,prefix為"",suffix為" ",range為auto,fallback為decimal,negative為"\2d"(-), pad為0 "",speak-as為auto的匿名style。也即我們只需要在匿名counter-style中指定system和symbols即可。

ol { list-style: symbols(cyclic "a" "b" "c" "d"); }

預(yù)定義style

CSS Counter Styles Level 3預(yù)定了很多不錯的符號系統(tǒng),例如針對中國用戶的天干、地支、中文數(shù)字、中文大寫等符號系統(tǒng)。這些預(yù)定義的系統(tǒng),使我們學習counter-style的不錯資源,下面我們就來看幾個。

/*兩位數(shù)字編號-01,02,03……10,11*/
@counter-style decimal-leading-zero {
  system: extends decimal;
  pad: 2 '0';
}
/*中文數(shù)字編號*/
@counter-style cjk-decimal {
  system: numeric;
  range: 0 infinite;
  symbols: \3007  \4E00  \4E8C  \4E09  \56DB  \4E94  \516D  \4E03  \516B  \4E5D;
  /* 〇 一 二 三 四 五 六 七 八 九 */
  suffix: "\3001";
  /* "、" */
}
/*天干編號*/
@counter-style cjk-heavenly-stem {
  system: alphabetic;
  symbols: "\7532" "\4E59" "\4E19" "\4E01" "\620A" "\5DF1" "\5E9A" "\8F9B" "\58EC" "\7678";
  /* 甲 乙 丙 丁 戊 己 庚 辛 壬 癸 */
  suffix: "、";
}
/*地支編號*/
@counter-style cjk-earthly-branch {
  system: alphabetic;
  symbols: "\5B50" "\4E11" "\5BC5" "\536F" "\8FB0" "\5DF3" "\5348" "\672A" "\7533" "\9149" "\620C" "\4EA5";
  /* 子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥 */
  suffix: "、";
}
/*中文大寫編號-壹仟壹佰壹拾壹*/
@counter-style simp-chinese-formal {
/* this is a predefined complex style in the CSS3 Counter Styles specification */
system: additive;
range: -9999 9999;
additive-symbols: 9000 \7396\4EDF, 8000 \634c\4EDF, 7000 \67d2\4EDF, 6000 \9646\4EDF, 5000 \4f0d\4EDF, 4000 \8086\4EDF, 3000 \53C1\4EDF, 2000 \8CB3\4EDF, 1000 \58F9\4EDF, 900 \7396\4F70, 800 \634C\4F70, 700 \67D2\4F70, 600 \9646\4F70, 500 \4f0d\4F70, 400 \56DB\4F70, 300 \53C1\4F70, 200 \8CB3\4F70, 100 \58F9\4F70, 90 \7396\62FE, 80 \634C\62FE, 70 \67D2\62FE, 60 \9646\62FE, 50 \4f0d\62FE, 40 \8086\62FE, 30 \53C1\62FE, 20 \8CB3\62FE, 10 \58F9\62FE, 9 \7396, 8 \634C, 7 \67D2, 6 \9646, 5 \4f0d, 4 \8086, 3 \53C1, 2 \8CB3, 1 \58F9, 0 \96F6;
suffix:'、 ';
negative: "\8D1F";
}

相關(guān)閱讀

w3c 候選標準
Predefined Counter Styles

致謝

前端開發(fā)whqet,關(guān)注前端開發(fā),分享相關(guān)資源。csdn專家博客,王海慶希望能對您有所幫助。
本文原文鏈接,http://blog.csdn.net/whqet/article/details/43605725
歡迎大家訪問獨立博客http://whqet.github.io
謝謝大家,歡迎拍磚哈!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽?zāi)J的外補...
    _Yfling閱讀 14,093評論 1 92
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 喜滋滋過完探親假回來,開心得不得了。她和灰蒙蒙一起跳交誼舞。在美妙的樂聲中,喜滋滋不停地旋轉(zhuǎn),越跳越輕盈,...
    蕊玉閱讀 231評論 2 3
  • 冬雪不眠,地底如春的夢蒲公英攢不住來時的約定櫻花吻別柳枝,春風的眷戀大地許給誰,不染塵埃的守候 落葉吻過花離去的角...
    夏爅閱讀 323評論 2 4
  • 聽說人會長大三次,第一次是發(fā)現(xiàn)自己不是世界的中心的時候,第二次是在發(fā)現(xiàn)即使再怎么努力終究還是有些事令人無能...
    大魔王鐘意閱讀 370評論 0 1

友情鏈接更多精彩內(nèi)容