这个选择器里面ID选择器的数目为a
统计在这个选择器里面类的选择器,属性选择器和伪类为b
统计在这个选择器里面的元素名称数目为c,其中要忽略伪元素.串联三个数字为a-b-c,得到特征值.
串连这3个数字就可以得到特征值.
* /* a=0 b=0 c=0 -> 特征值 = 0 */ li /* a=0 b=0 c=1 -> 特征值 = 1 */ ul li /* a=0 b=0 c=2 -> 特征值 = 2 */ ul ol+li /* a=0 b=0 c=3 -> 特征值 = 3 */ h1 + *[rel=up] /* a=0 b=1 c=1 -> 特征值 = 11 */ ul ol li.red /* a=0 b=1 c=3 -> 特征值 = 13 */ li.red.level /* a=0 b=2 c=1 -> 特征值 = 21 */ #x34y /* a=1 b=0 c=0 -> 特征值 = 100 */ #s12:not(FOO) /* a=1 b=0 c=1 -> 特征值 = 101 */
这样就能明白上面代码中的数字的含义了.
是不是就这么简单呢?
应该还有耐人寻味的地方.
比如说我给出这样一组CSS来定义上面的HTML:
p.italic { /* 11 */ color: black; }
div .italic { /* 11 */ color: red; }
.box p{ /* 11 */ color:green; }
.box em#em{ /* 111*/ color:blue }
body#content .wrap{ /* 111*/ & |