CSS 計數(shù)器簡介

CSS 計數(shù)器(counter)是由 CSS 維護(hù)的變量,其主要用途是拗窃,可以通過指定的規(guī)則來計算節(jié)點元素的使用次數(shù)瞎领。

計數(shù)器的使用很簡單,分為以下三步:

  1. 初始化計數(shù)器随夸。
  2. 指定增量規(guī)則九默。
  3. 應(yīng)用計數(shù)器

這三步分別對應(yīng)這計數(shù)器的三個屬性和方法:

  1. counter-reset
  2. counter-increment
  3. counter()/counters()

下面使用一個例子宾毒,來熟悉這些規(guī)則驼修。

首先,我們擁有一個如下的列表伍俘。

<ul>
  <li>第一項</li>
  <li>第二項</li>
  <li>第三項</li>
</ul>

接下來我們使用計數(shù)器來為這個列表前面加上序號,使它呈現(xiàn)為下面這個樣子勉躺。

counter example

很簡單癌瘾,如前面所述,三步走:

第一步饵溅,初始化計數(shù)器妨退。我們使用 counter-reset 操作,這個屬性可以接受兩個值為一組的多組屬性值蜕企,第一個值咬荷,我們?yōu)橛嫈?shù)器起個名字,第二個值轻掩,我們指定該計數(shù)器的初始值幸乒。

counter-reset: custom-name integer;

第一個計數(shù)器的名稱必須由字母、數(shù)字唇牧、下劃線罕扎、中劃線組成聚唐,且第一個字符必須為字母。第二個為整數(shù)腔召,可以為負(fù)值杆查,默認(rèn)值為0.一般情況下我們把它定義在它的父元素上。

此屬性可以指定多組臀蛛,代表多個計數(shù)器亲桦,例如:

counter-reset: counter1 counter2 1 counter3 -2;

上面的規(guī)則定義了三個計數(shù)器,第一個名稱為 counter1 初始值為 0浊仆,第二個 counter2 初始值為1客峭,第三個counter3 初始值為 -2。

所以回到上面的例子氧卧,我們的列表要從1開始桃笙,所以,我們可以如下定義:

ul {
    counter-reset: items 0; /* 0 可以省略 */
}

初始化之后沙绝,第二步搏明,指定計數(shù)器增量規(guī)則。我們使用 counter-increment 來實現(xiàn)這個目的闪檬,這個屬性的值和前面的 counter-reset 十分類似星著,同樣是由兩個值組成的多組值,第一個值同樣是由 counter-reset 初始化好的計數(shù)器名稱粗悯,第二個值為該計數(shù)器的增量虚循,默認(rèn)值為 1.

counter-increment: counter-name integer;

舉例,針對上面的三個計數(shù)器样傍,我們分別為它們指定不同的增量規(guī)則:

counter-increment: counter1 counter2 -1 counter3 2

我們?yōu)?counter1 沒有指定增量横缔,所以它會按照默認(rèn)值 1 遞增,counter2 按 1 遞減衫哥,counter3 按 2 遞增茎刚。

再次回到我們的例子,我們?yōu)橐呀?jīng)初始化好的 items 計數(shù)器指定以 1 遞增的增量規(guī)則:

li {
    counter-increment: items 1; /* 1 同樣可以省略 */
}

很簡單吧撤逢,接下來就是第三步膛锭,應(yīng)用我們指定好的計數(shù)器。一般來說蚊荣,計數(shù)器常用于自動生成列表項的遞增規(guī)則初狰,所以經(jīng)常在偽類元素的 content 屬性中使用它,同樣互例,我們需要一個 counter() 函數(shù)的幫助來將相應(yīng)計數(shù)器注入 content 屬性中奢入,我們把計數(shù)器的名稱傳入到此函數(shù)可以完成應(yīng)用。并且可以定制更個性化的計數(shù)規(guī)則媳叨。直接上例子:

li:before {
    content: counter(items) '. ';
}

這樣俊马,我們就為三個列表項前面添加了‘1. 2. 3.’的計數(shù)規(guī)則丁存。另外,counter() 方法可以指定第二個參數(shù)柴我,來約束計數(shù)器的顯示規(guī)則解寝,例如指定為 lower-roman,則它會按照小寫羅馬數(shù)字的形式遞增:⑺胰濉ⅱⅲⅳ···聋伦,至于這個值可以取什么值,其實就是 list-style-type` 可以取的值它都可以界睁。

需要注意的是觉增,除了初始化操作,其它兩項操作必須要指定在相應(yīng)的列表項上才能生效翻斟。

計數(shù)器嵌套

計數(shù)器特別強(qiáng)大的一點是逾礁,在一個嵌套的列表項,它會為內(nèi)層的子元素自動添加計數(shù)器访惜,我們可以在使用計數(shù)器的時候嘹履,應(yīng)用 counters() 函數(shù)的第二個參數(shù)來指定子項的連接符。例如:

content: counters(counter-name, '-');

在以上規(guī)則中债热,列表的子項會呈現(xiàn)為‘1-1砾嫉, 1-2, 1-3’這樣的形式窒篱。上例子:

<!-- html -->
<ul>
    <li>
        <ul>
            <li></li>
        </ul>
    </li>
    <li>
        <ul>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </li>
    <li>
        <ul>
            <li></li>
            <li></li>
        </ul>
    </li>
</ul>

<!-- css -->
ul {
  counter-reset: content;
  list-style-type: none;
}
ul li:before {
  counter-increment: content;
  content: counters(content, "-") ". ";
}

它呈現(xiàn)出來的效果如下圖:

counter 嵌套

以上就是對 CSS 計數(shù)器的簡單介紹焕刮。你可以看張鑫旭大神的這篇查看更詳細(xì)生動的介紹。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末墙杯,一起剝皮案震驚了整個濱河市配并,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌高镐,老刑警劉巖溉旋,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異避消,居然都是意外死亡低滩,警方通過查閱死者的電腦和手機(jī)召夹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門岩喷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人监憎,你說我怎么就攤上這事纱意。” “怎么了鲸阔?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵偷霉,是天一觀的道長迄委。 經(jīng)常有香客問我,道長类少,這世上最難降的妖魔是什么叙身? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮硫狞,結(jié)果婚禮上信轿,老公的妹妹穿的比我還像新娘。我一直安慰自己残吩,他們只是感情好财忽,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泣侮,像睡著了一般即彪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上活尊,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天隶校,我揣著相機(jī)與錄音,去河邊找鬼酬凳。 笑死惠况,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宁仔。 我是一名探鬼主播稠屠,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼翎苫!你這毒婦竟也來了权埠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤煎谍,失蹤者是張志新(化名)和其女友劉穎攘蔽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呐粘,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡满俗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了作岖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唆垃。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖痘儡,靈堂內(nèi)的尸體忽然破棺而出辕万,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布渐尿,位于F島的核電站醉途,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏砖茸。R本人自食惡果不足惜隘擎,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凉夯。 院中可真熱鬧嵌屎,春花似錦、人聲如沸恍涂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽再沧。三九已至尼夺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間炒瘸,已是汗流浹背淤堵。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留顷扩,地道東北人拐邪。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像隘截,于是被迫代替她去往敵國和親扎阶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理婶芭,服務(wù)發(fā)現(xiàn)东臀,斷路器,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,367評論 0 5
  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 13,671評論 0 15
  • HTML 5 HTML5概述 因特網(wǎng)上的信息是以網(wǎng)頁的形式展示給用戶的犀农,因此網(wǎng)頁是網(wǎng)絡(luò)信息傳遞的載體惰赋。網(wǎng)頁文件是用...
    阿啊阿吖丁閱讀 3,828評論 0 0
  • 凌晨五點半醒來, 習(xí)慣性瞥向窗外呵哨, 哇赁濒!無霾!無霾孟害! 心兒像要飛起來拒炎。 黎明中安靜得走過大街小巷, 一抬頭就見眉月...
    Crazy麻麻閱讀 264評論 22 17