css只给带属性的元素加样式_使用css[attr]属性存在选择器

CSS属性选择器[attr]可匹配任意含指定属性的元素,无论属性是否有值;如[title]选中所有带title属性的元素,注意大小写敏感性及与[attr="value"]的区别。

可以直接用 CSS 的属性选择器 [attr] 来匹配带有指定属性的元素,无需关心属性是否有值、值是什么,只要该属性存在就生效。

基础写法:匹配存在某属性的元素

例如,给所有带有 title 属性的元素加边框:

[title] { border: 1px solid #ccc; }

这样,、甚至

(HTML5 中允许布尔属性简写)都会被选中。

注意属性名大小写敏感性

HTML 中属性名不区分大小写,但 CSS 选择器默认区分(除非使用 [attr i] 忽略大小写):

  • [class] 能匹配 class="btn",也能匹配 CLASS="btn"(在 HTML 文档中)
  • 但在 XML 或 XHTML 模式下,或自定义元素中,建议统一小写,或显式加 i 标志:[data-role i]

结合其他选择器更精准定位

避免全局污染,推荐限定标签或上下文:

  • a[download] —— 只给带 download 属性的链接加样式
  • input[disabled] —— 专门设置禁用表单控件的外观
  • img[alt=""] —— 匹配 alt 属性为空字符串的图片(注意:不匹配缺失 alt 的元素)

常见误区提醒

别混淆 [attr][attr="value"]

  • [hidden] 匹配所有含 hidden 属性的元素(包括 hiddenhidden=""hidden="anything"
  • [hidden=""] 只匹配 hidden=""(空值),不匹配 hidden 布尔写法
  • HTML5 中 hidden 是布尔属性,推荐用 [hidden] 更稳妥