css計數器詳解


什么是css計數器

體驗更佳排版請戳原文鏈接:http://blog.liuxianan.com/css-counters.html

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

對,就是這種類似Word里面很常見的效果,代碼如下:

<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在你需要開始計數的地方重置計數器:

ol { counter-reset: section; }

計數器自增

然后通過counter-increment指定計數器何時自增,比如這里是碰到li就自增,所以我們寫在li上面:

ol li { counter-increment: section; }

顯示計數器

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

counter

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

counter(計數器名稱[, 可選的顯示風格]) // 默認風格為decimal

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

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

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

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請用力猛戳:http://mygit.me/html/2016/0308-css-counter.html

參考文章

https://dev.opera.com/articles/automatic-numbering-with-css-counters/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM