如果希望选择具有某个属性的元素,而不论该属性的值是什么,可以使用属性选择器。

例如要选择有 class 属性(值不限)的所有 h1 元素,可以这样写:

1
h1[class]{}

也可以根据多个属性进行选择,例如,为了将同时有 href 和 title 属性的HTML超链接的文本置为粗体,可以写作:

1
a[href][title]{font-weight: bold;}

还可以只选择有特性属性值的元素,例如想要选择链接指向 “http://www.163.com” 的 a 标签:

1
a[href="http://www.163.com"]{}<span style="font-family:'Microsoft YaHei';font-size:14px;line-height:21px;">

同样,也可以把多个属性值选择器连接在一起,例如:

1
a[href="http://www.163.com"][title="网易"]{}

注意,这种格式要求属性值必须完全匹配,例如:

就不能被 p[class=”link1″] 成功匹配,必须写作 p[class=”link1 link2″]。

如果想要只用一个属性值来匹配,需要使用波浪线(~),例如:

1
p[class~="link1"]{}/* ~可用于任何属性,不仅限于class */

这个选择器等价于

1
p.link1{}

在IE7+的浏览器中,还支持“子串匹配选择器”,如下所示:

1
[foo^="bar"] /* 选择 foo 属性值以 "bar" 开头的所有元素 */

1
[foo$="bar"] /* 选择 foo 属性值以 "bar" 结尾的所有元素 */

1
[foo*="bar"] /* 选择 foo 属性值中包含 "bar" 的所有元素 */

例如,想要将指向”163.com”的所有链接设置为粗体,可以使用如下代码:

1
a[href*="163.com"]{font-weight: bold;}

还有一种特定属性选择器,如下所示:

1
*[lang|="en"]{}

这个规则会选择 lang 属性等于 en 或者以 en- 开头的所有元素。

注意: id 选择器和以 id 为属性的属性选择器区别在于权重不同,后者权重等同于 class 选择器。