跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

如何通过CSS选择器实现简单的搜索过滤显示_利用[data-search]匹配

CSS无法执行搜索,但可通过data-search属性与[attribute*="value"]选择器实现无JS实时过滤;需预处理值为小写、去标点,并用JS动态更新style标签内容,配合display:none正确隐藏元素。 CSS 本身不能“执行搜索”,但可以配合
data-search
属性和属性选择器,实现无 JS 的实时过滤显隐 —— 前提是数据已静态存在于 HTML 中。 为什么用
[data-search*="xxx"]
而不是
[data-search="xxx"]
完全匹配(
=
)要求输入值与属性值一字不差,对用户极不友好;而包含匹配(
*=
)支持模糊查找,比如输入
sh
可同时命中
shanghai
、
shenzhen
、
beijing
(若其
data-search
含
sh
)。但注意:
*=
区分大小写,且会匹配子串(如
an
会误中
banana
),实际使用中建议统一转小写并控制字段内容干净。 推荐在 HTML 中预处理
data-search
值为小写、去标点、空格替换为连字符等,例如:
data-search="shanghai"
而非
data-search="上海"
避免在
data-search
中塞入长文本或 HTML 内容,否则
*=
易产生意外匹配 不支持正则、不支持多词 AND/OR,纯靠浏览器原生解析,无法做权重排序或高亮 如何动态更新
:not([data-search*="..."])
规则 浏览器不会自动监听
值变化并重写 CSS 规则。所以必须用极简 JS 注入新样式块,或切换预置的 class。最轻量做法是操作