20.1.2 指定个别元素不进行插入
在代码清单20-1的示例中,因为对页面上的h2元素使用了before选择器,所以该页面上如果有多个h2元素,则所有的h2元素前面都会被插入内容。如果想让其中一个或几个h2元素的前面不要插入内容时,应该怎么指定呢?
在CSS 2.1中,针对这个问题在content属性中追加了一个none属性值,使用方法如下代码所示。
通过这种方法,替h2元素增加一个类,然后替这个类起个名字,在这个类的样式指定中将content属性值设定为“none”,然后在不需要插入内容的元素中将class属性的属性值设定为这个给定的类名就可以了。
代码清单20-2为将代码清单20-1修改后使用none属性值的示例,该页面中有三个h2元素,其中第二个h2元素前面没有被插入内容。
这段代码的运行结果如图20-2所示。
另外,在CSS 2.1中,除了none属性值外,还为content属性添加了一个“normal”属性值,其作用与使用方法none属性值的作用相同,并且使用方法也相同,读者可自行在代码清单20-2中,将none属性值修改为normal属性值,然后在浏览器中重新运行该示例,观察运行结果。
那么,既然normal属性值的作用与none属性值的作用相同,为什么CSS 3中还要追加这个normal属性值呢?它们的区别又是什么呢?这里要补充说明的是,从CSS 2.1开始,只有当使用before选择器与after选择器的时候,normal属性值的作用才与none属性值的作用相同,都是不让选择器在个别元素的前面或后面插入内容。但是none属性值只能应用在这两个选择器中,而normal属性值还可以应用在其他用来插入内容的选择器中,而在CSS 2中,只有before选择器与after选择器能够用来在元素的前面或后面插入内容,所以这两者的作用完全相同。在CSS 3草案中,已经追加了其他一些可以用来插入内容的选择器的提案,针对这一类选择器,就只能使用normal属性值了,而且normal属性值的作用也会根据选择器的不同而发生变化。