适用场景:
当排序以及序号变动对服务端造成的压力大的情况下,使用css计数。 在早期,只有ol和ul可以对子元素li进行排序,,而CSS2.1规范中加入了counter这一属性,配合伪元素:before、:after中的content使用,便可以对指定的元素进行排序。
CSS计数器包括了counter-reset、counter-increment、content三个属性、counter() 函数
定义和用法:
counter-increment 属性设置某个选取器每次出现的计数器增量。默认增量是 1。
利用这个属性,计数器可以递增(或递减)某个值,这可以是正值或负值。如果没有提供 number 值,则默认为 1。如果使用了 “display: none”,则无法增加计数。如使用 “visibility: hidden”,则可增加计数。
可能的值:
none 默认。选择器无计数器增量。 id number id 定义将增加计数的选择器、id 或 class。 number 定义增量,可以是正数、零或者负数。 inherit 规定应该从父元素继承 counter-increment 属性的值。
counter-reset 属性设置某个选择器出现次数的计数器的值。默认为 0。利用这个属性,计数器可以设置或重置为任何值,可以是正值或负值。如果没有提供 number,则默认为 0。
可能的值:
none 默认。不能对选择器的计数器进行重置。 id number id 定义重置计数器的选择器、id 或 class。 number 可设置此选择器出现次数的计数器的值。可以是正数、零或负数。 inherit 规定应该从父元素继承 counter-reset 属性的值。
counter()函数只能被使用在content属性上。如果想重复多次计数器可以使用 counters()
第一个参数:counter-increment中定义的计数器标识符; 第二个参数:计数器风格,类似于list-style-type。
demo:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=10,IE=9,IE=8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
<title>练小习的前端技术笔记</title>
<style type="text/css">
body {counter-reset:section;}
h1 {counter-reset:subsection;}
h1:before
{
counter-increment:section;
content:"Section " counter(section) ". ";
}
h2:before
{
counter-increment:subsection;
content:counter(section) "." counter(subsection) " ";
}
</style>
</head>
<body>
<h1>HTML tutorials</h1>
<h2>HTML Tutorial</h2>
<h2>XHTML Tutorial</h2>
<h2>CSS Tutorial</h2>
<h1>Scripting tutorials</h1>
<h2>JavaScript</h2>
<h2>VBScript</h2>
<h1>XML tutorials</h1>
<h2>XML</h2>
<h2>XSL</h2>
</body>
</html>
提示:你可以先修改部分代码再运行。
浏览器兼容情况: