【CSS 选择器世界】CSS 属性选择器搜索过滤技术

简介: CSS 属性选择器搜索过滤技术

正文


一、属性值正则匹配选择器


属性值正则匹配选择器包括下面 3 种:


[attr^="val"]
[attr$="val"]
[attr*="val"]


这三种属性选择器完全是字符匹配,而非单词匹配。其中 ^、美元符号 $ 以及星号 * 都是正则表达式中的特殊标识符,分别表示前匹配、后匹配和任意匹配。


二、实例


我们可以借助属性选择器来辅助我们实现搜索过滤效果,如通讯录、城市列表,这样做性能高,代码少。


HTML结构如下:


<input type="search" id="input" placeholder="输入城市名称或拼音" />
<ul> 
    <li data-search="重庆市chongqing">重庆市</li>
    <li data-search="哈尔滨市haerbing">哈尔滨市</li>
    <li data-search="长春市changchun">长春市</li>
    <li data-search="兰州市lanzhou">兰州市</li>
    <li data-search="北京市beijing">北京市</li>
    <li data-search="杭州市hangzhou">杭州市</li>
    <li data-search="长沙市changsha">长沙市</li>
    <li data-search="沈阳市shenyang">沈阳市</li>
    <li data-search="成都市chengdu">成都市</li>
    <li data-search="合肥市hefei">合肥市</li>
    <li data-search="天津市tianjin">天津市</li>
    <li data-search="西安市xian">西安市</li>
    <li data-search="武汉市wuhan">武汉市</li>
    <li data-search="济南市jinan">济南市</li>
    <li data-search="广州市guangzhou">广州市</li>
    <li data-search="南京市nanjing">南京市</li>
    <li data-search="上海市shanghai">上海市</li>
    <li data-search="昆明市kunming">昆明市</li>
    <li data-search="郑州市zhangzhou">郑州市</li>
    <li data-search="贵阳市guiyang">贵阳市</li>
    <li data-search="西宁市xining">西宁市</li>
    <li data-search="海口市haikou">海口市</li>
    <li data-search="南昌市nanchang">南昌市</li>
    <li data-search="香港 特区xianggang">香港 特区</li>
    <li data-search="澳门 特区aomen">澳门 特区</li>
</ul>


JS 代码如下:


var eleStyle = document.createElement('style');
document.head.appendChild(eleStyle);
// input element
input.addEventListener("input", function() {
    var value = this.value.trim();
    eleStyle.innerHTML = value ? '[data-search]:not([data-search*="'+ value +'" i]) { display: none; }' : '';
});


PS: 正则匹配运算符是属性选择器新增的运算符,它可以忽略属性值大小写,使用字符 i 或者 I 作为运算符值,但约定俗称都使用小写字母 i 作为运算符。(上面的 JS 代码中就有用到)


最终效果如下:



17.webp.jpg

1


18.webp.jpg

2



CSS 的一些高级特性,学起来还是蛮有意思的,深入研究的话,会发现平时一些严重依赖 js 代码的模块,都是可以解耦合的,加油继续好好学。

目录
相关文章
|
3天前
|
XML 前端开发 数据格式
css核心组成部分包括选择器、属性和值。
【4月更文挑战第5天】css核心组成部分包括选择器、属性和值。
18 7
|
3天前
|
前端开发 开发者
提升你的CSS技能:深入理解伪类选择器和伪元素选择器!
【4月更文挑战第2天】 提升你的CSS技能:深入理解伪类选择器和伪元素选择器!
36 12
|
21小时前
|
前端开发
前端 css 经典:选择器速记
前端 css 经典:选择器速记
6 0
|
3天前
|
前端开发
【Web前端】CSS基本语法规范和引入方式&&常见选择器用法&&常见元素属性
【Web前端】CSS基本语法规范和引入方式&&常见选择器用法&&常见元素属性
|
3天前
|
前端开发
CSS选择器
CSS选择器
13 1
|
3天前
|
缓存 移动开发 前端开发
【专栏:HTML与CSS前端技术趋势篇】HTML与CSS在PWA(Progressive Web Apps)中的应用
【4月更文挑战第30天】PWA(Progressive Web Apps)结合现代Web技术,提供接近原生应用的体验。HTML在PWA中构建页面结构和内容,响应式设计、语义化标签、Manifest文件和离线页面的创建都离不开HTML。CSS则用于定制主题样式、实现动画效果、响应式布局和管理字体图标。两者协同工作,保证PWA在不同设备和网络环境下的快速、可靠和一致性体验。随着前端技术进步,HTML与CSS在PWA中的应用将更广泛。
|
3天前
|
前端开发 JavaScript 开发者
【专栏:HTML与CSS前端技术趋势篇】前端框架(React/Vue/Angular)与HTML/CSS的结合使用
【4月更文挑战第30天】前端框架React、Vue和Angular助力UI开发,通过组件化、状态管理和虚拟DOM提升效率。这些框架与HTML/CSS结合,使用模板语法、样式管理及组件化思想。未来趋势包括框架简化、Web组件标准采用和CSS在框架中角色的演变。开发者需紧跟技术发展,掌握新工具,提升开发效能。
|
3天前
|
前端开发 JavaScript UED
【专栏:HTML 与 CSS 前端技术趋势篇】Web 性能优化:CSS 与 HTML 的未来趋势
【4月更文挑战第30天】本文探讨了CSS和HTML在Web性能优化中的关键作用,包括样式表压缩、选择器优化、DOM操作减少等策略。随着未来趋势发展,CSS模块系统、自定义属性和响应式设计将得到强化,HTML新特性也将支持复杂组件构建。同时,应对浏览器兼容性、代码复杂度和性能功能平衡的挑战是优化过程中的重要任务。通过案例分析和持续创新,我们可以提升Web应用性能,创造更好的用户体验。
|
3天前
|
移动开发 前端开发 UED
【专栏:HTML与CSS前端技术趋势篇】渐进式增强与优雅降级在前端开发中的实践
【4月更文挑战第30天】前端开发中的渐进式增强和优雅降级是确保跨浏览器、跨设备良好用户体验的关键策略。渐进式增强是从基础功能开始,逐步增加高级特性,保证所有用户能访问基本内容;而优雅降级则是从完整版本出发,向下兼容,确保低版本浏览器仍能使用基本功能。实践中,遵循HTML5/CSS3规范,使用流式布局和响应式设计,检测浏览器特性,并提供备选方案,都是实现这两种策略的有效方法。选择合适策略优化网站,提升用户体验。
|
3天前
|
前端开发 开发者 UED
【专栏:HTML与CSS前端技术趋势篇】网页设计中的CSS Grid与Flexbox之争
【4月更文挑战第30天】本文对比了CSS Grid和Flexbox两种布局工具。Flexbox擅长一维布局,简单易用,适合导航栏和列表;CSS Grid则适用于二维布局,能创建复杂结构,适用于整个页面布局。两者各有优势,在响应式设计中都占有一席之地。随着Web标准发展,它们的结合使用将成为趋势,开发者需掌握两者以应对多样化需求。