css計數器

什麼是css計數器

就是採用css給一些html元素自動生成編號,好比相似1.3.2這種,先看個效果:css

對,就是這種相似Word裏面很常見的效果,代碼以下:html

<style type="text/css">
#demo1 ol { counter-reset: section; list-style-type: none; }
#demo1 ol li { counter-increment: section; }
#demo1 ol li:before { content: counters(section, ".") ". "; }
</style>
<div id="demo1">
	<ol>
		<li>進風口的爽膚水
			<ol>
				<li>非進口商的</li>
				<li>非進口商的</li>
				<li>非進口商的</li>
			</ol>
		</li>
		<li>進風口的爽膚水
			<ol>
				<li>非進口商的</li>
				<li>
					非進口商的
					<ol>
						<li>將咖啡色的開發商</li>
						<li>將咖啡色的開發商</li>
						<li>將咖啡色的開發商</li>
						<li>將咖啡色的開發商</li>
					</ol>
				</li>
				<li>非進口商的</li>
			</ol>
		</li>
		<li>進風口的爽膚水</li>
	</ol>
</div>
複製代碼

IE8+,Chrome和Firefox支持良好。屬於CSS2範疇。瀏覽器

解釋

初始化計數器

首先,給咱們的計數器取一個名字,這個名字能夠隨便取,好比這裏叫section,而後使用counter-reset在你須要開始計數的地方重置計數器:bash

ol { counter-reset: section; }
複製代碼

計數器自增

而後經過counter-increment指定計數器什麼時候自增,好比這裏是碰到li就自增,因此咱們寫在li上面:ide

ol li { counter-increment: section; }
複製代碼

顯示計數器

最後,就是如何顯示計數器了。顯示計數器有2種方式,counter和counters,先講counter。ui

counterspa

counter只是簡單的從前至後計數,忽略嵌套,語法以下:ssr

counter(計數器名稱[, 可選的顯示風格]) // 默認風格爲decimal
複製代碼

其中第二個參數爲可選,表示計數器顯示的風格,例如,你能夠使用upper-roman以羅馬數字顯示,默認爲decimal,即數字形式,其可選值大部分和css的 list-style-style 的一致,除了以下幾個不被支持(不一樣瀏覽器支持的程度不同):code

  • circle
  • square
  • lower-alpha
  • upper-mongolian

咱們使用counter把它顯示到li:before上面,並指定以大寫羅馬數字顯示:cdn

ol li:before { content: counter(section, upper-roman) ". ";}
複製代碼

效果以下:

counters

下面再來看看counters,counters和counter的最大區別是它會嵌套,什麼是嵌套,個人表達能力有限,但我想大部分看到這裏應該都明白了,就是相似1.3.8這種,

語法以下:

counters(計數器名稱, 嵌套時拼接字符串[, 可選的顯示風格])
複製代碼

好比咱們使用點號.分割,

ol li:before { content: counters(section, "."); }
複製代碼

另外,你能夠將counters或者counter與任意字符串用空格拼接:

ol li:before { content: "我是字符串1" counters(section, ".") "我是字符串2" "我是字符串3"; }
複製代碼

甚至counter和counters混用:

ol li:before { content: counter(section) ". " counters(section, ".", lower-alpha) ". "; }
複製代碼

效果以下:

一些高級用法

使用中文計數

部分瀏覽器可能不支持:

#demo5 ol { counter-reset: section; }
#demo5 ol li { counter-increment: section; }
#demo5 ol li:before { content: counter(section, cjk-ideographic) "、"; }
複製代碼

效果:

自定義計數器起始值

#demo6 ol { counter-reset: section 5; }
#demo6 ol li { counter-increment: section; }
#demo6 ol li:before { content: counter(section) ". "; }
複製代碼

自定義每次遞增的值

#demo7 ol { counter-reset: section 5; }
#demo7 ol li { counter-increment: section 2; }
#demo7 ol li:before { content: counter(section) ". "; }
複製代碼

遞減計數

#demo8 ol { counter-reset: section 6; }
#demo8 ol li { counter-increment: section -1; }
#demo8 ol li:before { content: counter(section) ". "; }
複製代碼

多個計數器同時使用

#demo9 ol { counter-reset: section; }
#demo9 ol li { counter-increment: section; }
#demo9 ol li:before { content: "==" counter(section, lower-alpha) counters(section, '-') "** "; }
複製代碼

完整demo

查看完整demo請用力猛戳:demo.liuxianan.com/2016/03/08-…

相關文章
相關標籤/搜索