5.3.6 按属性选择元素

5.3.6 按属性选择元素

在CSS中可以对具有给定属性或属性值的元素进行格式化。

选择器写为:

元素[属性="value"]——表示属性值等于这里的value的元素被选中;

元素[属性~="value"]——表示属性值包含这里的value的元素被选中;

元素[属性|="value"]——表示属性值等于这里的value或以value开头(“|”是管道符号,不是数字1,也不是小写字母l)。或者写为

^="value"——表示属性值以value开头的元素被选中;

$="value"——表示属性值以value结尾的元素被选中;

*="value"——表示属性值中包含value的元素被选中。

当前所有主流浏览器均支持按元素包含的属性选择元素。后面3种选择方式是CSS3中新增的特性,在IE7和IE8中会有一些异常。

下面来看一些具体的例子,有的例子涉及第6章(图像)和第8章(超链接的属性)的内容,可以参照这两章来看。

(1)这个选择器中没有属性值,它选择的是所有具有class属性的section元素。

(2)这个选择器选择任何href属性值等于#(必须完全匹配)的a元素。

(3)假设一个section元素有两个类,如<section class="blog text">,另一个section元素有一个类,如<section class="blog">。~=语法可以测试单词的部分匹配,由于第一个section元素的class属性中包含blog属性,因此在这个例子中,两个元素都会显示为红色。

下面这个选择器也可以同时选中这两个section元素,“*=”表示属性值中包含blo的元素。

但是下面这个选择器就不能满足要求,因为blo并不是某个完整属性的值。

(4)这个选择器选择任何带有lang属性且属性值以zh开头的h2元素。

(5)通过使用通用选择器,这个选择器选择任何带有lang属性且属性值以zh开头的元素。

(6)通过联合使用多种方法,这个选择器选择所有既有任意href属性,同时title属性值中包含属性值howdy的a元素。

(7)作为上一个选择器的精确度低一些的变体,这个选择器选择所有既有任意href属性,同时title属性值中包含how(它匹配how、howdy、show等,无论how出现在属性值的什么位置)的a元素。

(8)这个选择器匹配任何href属性以http://开头的a元素。

(9)这个选择器匹配任何src属性值完全等于logo.png的img元素。

(10)这个选择器的精确度比上一个低一些,它匹配任何src属性值以.png结尾的img元素。