如何在CSS中使用属性选择器_根据属性值选择元素

属性选择器可根据元素的属性或属性值灵活选中目标;例如[title]选含title属性的元素,[type="text"]精确匹配type为text的元素,[href*="example"]匹配href含example的链接,[class^="btn-"]匹配class以btn-开头的元素,[src$=".png"]匹配src以.png结尾的图片,[class~="highlight"]匹配class包含highlight单词的元素,提升样式规则的精准性与可维护性。

在CSS中,属性选择器可以根据元素是否包含某个属性,或属性值的具体内容来选中元素。这种方式非常灵活,尤其适合处理HTML中带有特定属性或属性值的标签。

基本属性选择器:根据是否存在某属性

最简单的属性选择器是选中具有指定属性的元素,不管属性值是什么。

例如,选中所有带有 title 属性的元素:

[title] {
  color: blue;
}

这段样式会让所有包含 title 属性的元素文字变为蓝色,比如

这个段落会被选中

精确匹配属性值

如果你想选中属性值完全等于某个字符串的元素,可以使用等号(=)。

[type="text"] {
  border: 1px solid gray;
}

这条规则会选中所有 type="text" 的输入框,比如用于文本输入的表单字段。

匹配属性值的一部分

CSS还提供了一些更灵活的匹配方式,适用于属性值包含、开头、结尾等情况。

  • [attr*="value"]:属性值中包含指定字符串(任意位置)
    例:[href*="example"] 匹配链接中含有 "example" 的 a 标签
  • [attr^="value"]:属性值以指定字符串开头
    例:[class^="btn-"] 可匹配 class="btn-primary" 的按钮
  • [attr$="value"]:属性值以指定字符串结尾
    例:[src$=".png"] 选中所有以 .png 结尾的图片

匹配空格分隔的单词(适用于class和lang)

使用波浪号(~)可以匹配属性值中以空格分隔的某个单词

[class~="highlight"] {
  background: yellow;
}

这样即使元素有多个class,如 class="info highlight important",也能被正确选中。

基本上就这些常用方式。属性选择器不复杂但容易忽略,合理使用能减少额外的类名,让样式更智能。