登录
首页 >  文章 >  前端

CSS如何选中含特定字符元素

时间:2026-05-01 18:08:53 138浏览 收藏

CSS中`[attr*=value]`属性选择器能精准匹配属性值中任意位置包含指定子串的元素,特别适用于自定义`data-*`属性的语义化筛选,但在`class`等空格分隔的多值属性上慎用,极易因字符串重叠(如`"attention"`误匹配`"btn"`)引发意外交互;实际开发应优先采用精确的类选择器(`.btn`)或单词匹配(`[class~="btn"]`),将模糊匹配视为过渡方案而非常态,兼顾可维护性、意图清晰性与结构健壮性。

CSS如何选择包含特定字符的元素_利用模糊匹配属性选择器css

[attr*=value] 匹配属性中包含某字符串的元素

直接上结论:想选“属性值里含有某个子串”的元素,就用 [attr*=value] 这个属性选择器。它不区分位置,只要 attr 的值里连续出现 value,就命中。

常见错误是误用 [attr~=value](空格分隔的单词匹配)或 [attr^=value](只认开头),结果怎么都选不到目标元素。

  • [title*="error"] 能选中
    ,也能选中

  • [title~="error"] 只会匹配 title="something error other" 这种用空格分开的独立单词
  • 注意 value 是纯字符串匹配,不支持正则、不忽略大小写(ERRORerror

data-* 属性是最佳实践场景

实际项目里,[attr*=value] 最稳妥的用武之地是自定义 data- 属性。浏览器不校验它的值,你可自由设计命名规则,比如用连字符分隔语义段。

例如统一用 data-role="modal-confirm"data-role="modal-alert",那么:

  • [data-role*="modal"] 一次性选中所有 modal 类型组件
  • [data-role*="confirm"] 单独捞出确认类弹窗,不用给每个加额外 class
  • 避免污染 class 名称空间,也比写一堆 .modal.confirm 更易维护

小心 class 属性里用 *= 的陷阱

很多人想靠 [class*="btn"] 选按钮,但这是高危操作——class 是空格分隔的多值列表,*= 会把整个 class 字符串当一个整体匹配。

比如

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>