属性选择器用于根据 HTML 元素的属性和值来选择元素。不同的属性选择器语法适用于各种匹配需求。让我们逐一解释每种语法,并给出相应的例子:
1. [attr]
- 选择具有指定属性的所有元素,不考虑属性值。
- 语法:
[attr]
- 例子:选择所有有
name
属性的元素。
CSS 选择器:<input type="text" name="username"> <input type="password" name="password"> <input type="submit">
[name]
- 这个选择器会选择第一个和第二个
<input>
,因为它们有name
属性。
- 这个选择器会选择第一个和第二个
2. [attr=value]
- 选择具有指定属性,且属性值等于指定值的元素。
- 语法:
[attr=value]
- 例子:选择
name="username"
的元素。
CSS 选择器:<input type="text" name="username"> <input type="password" name="password">
[name="username"]
- 这个选择器会选择第一个
<input>
,因为它的name
属性等于"username"
。
- 这个选择器会选择第一个
3. [attr~=value]
- 选择具有指定属性,且属性值包含一个以空格分隔的列表,其中至少有一个值等于指定值的元素(类似于
class
属性匹配)。 - 语法:
[attr~=value]
- 例子:选择
class
属性中包含btn
的元素。
CSS 选择器:<button class="btn primary">Submit</button> <button class="btn secondary">Cancel</button>
[class~="btn"]
- 这个选择器会选择所有具有
btn
类的按钮。
- 这个选择器会选择所有具有
4. [attr|=value]
- 选择具有指定属性,且属性值是以指定值开头的,或者等于该值,值可以用连字符(
-
)后接其他内容。 - 语法:
[attr|=value]
- 例子:选择
lang="en"
或者lang
以en-
开头的元素。
CSS 选择器:<html lang="en"> <html lang="en-US"> <html lang="fr">
[lang|="en"]
- 这个选择器会选择前两个
<html>
标签,因为lang
属性等于"en"
或以"en-"
开头。
- 这个选择器会选择前两个
5. [attr^=value]
- 选择具有指定属性,且属性值以指定值开头的元素。
- 语法:
[attr^=value]
- 例子:选择
href
属性以"https"
开头的链接。
CSS 选择器:<a href="https://example.com">Link 1</a> <a href="http://example.com">Link 2</a>
[href^="https"]
- 这个选择器会选择第一个
<a>
标签,因为它的href
以"https"
开头。
- 这个选择器会选择第一个
6. [attr$=value]
- 选择具有指定属性,且属性值以指定值结尾的元素。
- 语法:
[attr$=value]
- 例子:选择
src
属性以.png
结尾的图片。
CSS 选择器:<img src="image1.png"> <img src="image2.jpg">
[src$=".png"]
- 这个选择器会选择第一个
<img>
标签,因为src
以.png
结尾。
- 这个选择器会选择第一个
7. [attr*=value]
- 选择具有指定属性,且属性值包含指定值的元素。
- 语法:
[attr*=value]
- 例子:选择
href
属性中包含example
的链接。
CSS 选择器:<a href="https://example.com">Link 1</a> <a href="https://anotherexample.com">Link 2</a> <a href="https://somethingelse.com">Link 3</a>
[href*="example"]
- 这个选择器会选择前两个
<a>
标签,因为它们的href
属性中包含"example"
。
- 这个选择器会选择前两个
总结
属性选择器使得我们可以根据 HTML 元素的属性及其值进行灵活、精确的选择,适用于不同的匹配需求:
[attr]
:选择具有指定属性的元素。[attr=value]
:选择属性值完全等于指定值的元素。[attr~=value]
:选择属性值中包含指定值(通过空格分隔)的元素。[attr|=value]
:选择属性值以指定值开头或等于指定值的元素(通常用于语言或其他类似属性)。[attr^=value]
:选择属性值以指定值开头的元素。[attr$=value]
:选择属性值以指定值结尾的元素。[attr*=value]
:选择属性值包含指定值的元素。