属性选择器

概述

属性选择器可以与各种类型的运算符一起使用,从而相应地更改选择标准。他们使用给定属性或属性值的选择来选择元素。

笔记:

  1. 属性值可以用单引号或双引号括起来。根本没有引号可能也有效,但根据 CSS 标准,它是无效的,并且不鼓励。

  2. 没有单一的集成 CSS4 规范,因为它被拆分为单独的模块。但是,有“4 级”模块。查看浏览器支持

细节

[attribute]

选择具有给定属性的元素。

div[data-color] {
  color: red;
}
<div data-color="red">This will be red</div>
<div data-color="green">This will be red</div>
<div data-background="red">This will NOT be red</div>

JSBin 现场演示

[attribute="value"]

选择具有给定属性和值的元素。

div[data-color="red"] {
  color: red;
}
<div data-color="red">This will be red</div>
<div data-color="green">This will NOT be red</div>
<div data-color="blue">This will NOT be red</div>

JSBin 现场演示

[attribute*="value"]

选择具有给定属性和值的元素,其中给定属性在任何位置包含给定值(作为子字符串)。

[class*="foo"] {
  color: red;
}
<div class="foo-123">This will be red</div>
<div class="foo123">This will be red</div>
<div class="bar123foo">This will be red</div>
<div class="barfooo123">This will be red</div>
<div class="barfo0">This will NOT be red</div>

JSBin 现场演示

[attribute~="value"]

选择具有给定属性和值的元素,其中给定值出现在以空格分隔的列表中。

[class~="color-red"] {
  color: red;
}
<div class="color-red foo-bar the-div">This will be red</div>
<div class="color-blue foo-bar the-div">This will NOT be red</div>

JSBin 现场演示

[attribute^="value"]

选择具有给定属性和值的元素,其中给定属性以值开头。

[class^="foo-"] {
  color: red;
}
<div class="foo-123">This will be red</div>
<div class="foo-234">This will be red</div>
<div class="bar-123">This will NOT be red</div>

JSBin 现场演示

[attribute$="value"]

选择具有给定属性和值的元素,其中给定属性以给定值结束。

[class$="file"] {
  color: red;
}
<div class="foobar-file">This will be red</div>
<div class="foobar-file">This will be red</div>
<div class="foobar-input">This will NOT be red</div>

JSBin 现场演示

[attribute|="value"]

选择具有给定属性和值的元素,其中属性的值恰好是给定值,或者恰好是给定值,后跟 -(U + 002D)

[lang|="EN"] {
  color: red;
}
<div lang="EN-us">This will be red</div>
<div lang="EN-gb">This will be red</div>
<div lang="PT-pt">This will NOT be red</div>

JSBin 现场演示

[attribute="value" i]

选择具有给定属性和值的元素,其中属性的值可以表示为 ValueVALUEvAlUe 或任何其他不区分大小写的可能性。

[lang="EN" i] {
  color: red;
}
<div lang="EN">This will be red</div>
<div lang="en">This will be red</div>
<div lang="PT">This will NOT be red</div>

JSBin 现场演示

属性选择器的特殊性

0-1-0

与类选择器和伪类相同。

*[type=checkbox] // 0-1-0

请注意,这意味着属性选择器可用于通过 ID 以较低的特​​异性水平选择元素,而不是使用 ID 选择器选择元素:[id="my-ID"] 的目标元素与 #my-ID 相同,但特异性较低。

有关更多详细信息,请参见语法部分