CSS 属性选择器

属性选择器对带有指定属性的 HTML 元素设置样式。 可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性。

了解属性选择器

CSS属性选择器提供了一种简单而强大的方法,可以根据特定属性或属性值的存在将样式应用于HTML元素。

您可以通过将属性(可选地带有值)放在一对方括号中来创建属性选择器。您也可以在其前面放置一个元素类型选择器

以下各节描述了最常见的属性选择器。

CSS [attribute]选择器

这是属性选择器的最简单形式,如果给定的属性存在,则将样式规则应用于元素。例如,我们可以title使用以下样式规则来样式化所有具有属性的元素:

[title] {
    color: blue;
}
测试看看‹/›

[title]上例中的选择器匹配具有title属性的所有元素。

您还可以通过将属性选择器放置在元素类型选择器之后,将选择范围限制为特定的HTML元素,如下所示:

abbr[title] {
    color: red;
}
测试看看‹/›

选择器abbr[title]仅匹配具有title属性的元素,因此它匹配缩写,但不匹配具有属性的元素title。

CSS [attribute="value"]选择器

您可以使用=运算符使属性选择器匹配属性值与给定值完全相等的任何元素:

input[type="submit"] {
    border: 1px solid green;
}
测试看看‹/›

上例中的选择器匹配 input 具有type属性值等于的所有元素submit。

CSS [attribute〜="value"]选择器

您可以使用~=运算符来使属性选择器与属性值是由空格分隔的值(例如class="alert warning")的列表的任何元素匹配,其中一个值等于指定的值:

[class~="warning"] {
    color: #fff;
    background: red;
}
测试看看‹/›

该选择器将任何具有class属性的HTML元素匹配,该属性包含以空格分隔的值,其中一个为warning。例如,它具有类值的元素相匹配warning,alert warning等等。

CSS [attribute |="value"]选择器

您可以使用|=运算符使属性选择器与属性具有以指定的值开头的连字符分隔的值列表的任何元素匹配:

[lang|=en] {
    color: #fff;
    background: blue;
}
测试看看‹/›

上例中的选择器匹配具有lang属性的所有元素,该属性包含以开头的值en,无论该值后面是否带有连字符和更多字符。换句话说,它的元素相匹配lang具有价值属性en,en-US,en-GB等,而不能为US-en,GB-en。

CSS [attribute ^="value"]选择器

您可以使用^=运算符使属性选择器与属性值指定值开头的任何元素匹配。它不必是一个完整的词。

a[href^="http://"] {
    background: url("external.png") 100% 50% no-repeat;
    padding-right: 15px;
}
测试看看‹/›

上例中的选择器将定位所有外部链接并添加一个小图标,指示它们将在新的选项卡或窗口中打开。

CSS [attribute $="value"]选择器

同样,可以使用$=运算符选择属性值指定值结尾的所有元素。它不必是一个完整的词。

a[href$=".pdf"] {
    background: url("pdf.png") 0 50% no-repeat;
    padding-left: 20px;
}
测试看看‹/›

上例中的选择器选择链接到PDF文档的所有元素,并添加一个小的PDF图标,以向用户提供有关链接的提示。

CSS [attribute *="value"]选择器

您可以使用*=运算符使属性选择器匹配其属性值包含指定值的所有元素。

[class*="warning"] {
    color: #fff;
    background: red;
}
测试看看‹/›

上例中的此选择器将所有HTML元素与classvalue包含的属性进行匹配warning。例如,它的元素相匹配具有类值warning,alert warning,alert-warning或alert_warning等

使用属性选择器样式化表单

属性选择器对于不带class或的样式样式特别有用id

input[type="text"], input[type="password"] {
    width: 150px;
    display: block;
    margin-bottom: 10px;
    background: yellow;
}
input[type="submit"] {
    padding: 2px 10px;
    border: 1px solid #804040;
    background: #ff8040;
}
测试看看‹/›