用CSS3实现客户端的全文检索
来源:互联网 发布:pptv网络大电影合作 编辑:程序博客网 时间:2024/05/16 09:29
今天我们休息休息,讲讲简单的东西。
使用data-属性作为索引,和一个用于检索的CSS3动态选择器,我们可以不需要JavaScript,直接实现客户端的全文检索功能。下面是一个示例:
检索列表
<!-- Data generated by Faker, see https://github.com/fzaninotto/Faker --><ul class="contacts"> <!-- Add text to the data-index attribute to enable full-text search --> <!-- Don't forget to lowercase it to make search case-insensitive --> <li class="searchable" data-index="onabednarschamberger.frank@wuckert.com1-265-479-1196x714"> <dl> <dt>First Name</dt><dd>Ona</dd> <dt>Last Name</dt><dd>Bednar</dd> <dt>Email</dt><dd>schamberger.frank@wuckert.com</dd> <dt>Phone</dt><dd>1-265-479-1196x714</dd> </dl> </li> <li class="searchable" data-index="newtoncronintorphy.dorothea@gmail.com(121)644-5577"> <dl> <dt>First Name</dt><dd>Newton</dd> <dt>Last Name</dt><dd>Cronin</dd> <dt>Email</dt><dd>torphy.dorothea@gmail.com</dd> <dt>Phone</dt><dd>(121)644-5577</dd> </dl> </li> <!-- add as much data as you want --></ul>
搜索代码
搜索功能的实现非常简单,它依赖于两个CSS3支持很好的选择器(:not()和 [attr*=]),以及每当搜索框输入内容改变时重写样式规则。
<input type="text" placeholder="search" id="search"><style id="search_style"></style><script type="text/javascript">var searchStyle = document.getElementById('search_style');document.getElementById('search').addEventListener('input', function() { if (!this.value) { searchStyle.innerHTML = ""; return; } // look ma, no indexOf! searchStyle.innerHTML = ".searchable:not([data-index*=\"" + this.value.toLowerCase() + "\"]) { display: none; }"; // beware of css injections!});</script>
使用CSS3选择器而不是JavaScript的indexOf()来实现检索功能是因为速度:当每次按键时你只改变一个元素(<style>标签),而不是匹配检索词的所有元素。IE9+以上的版本支持:not()选择器,而且可以很容易的使用两个规则来兼容IE8+。
下面是一个演示,点击此处可以看到。
本文译自《Client-sidefull-text search in CSS》,译者蒋宇捷(http://blog.csdn.net/hfahe)。转载请注明。
- 用CSS3实现客户端的全文检索
- elasticsearch的实现全文检索
- elasticsearch的实现全文检索
- elasticsearch的实现全文检索
- elasticsearch的实现全文检索
- 全文检索的实现方式
- elasticsearch的实现全文检索
- elasticsearch的实现全文检索
- 如何实现Oracle9iRealease2的全文检索
- 如何实现Oracle9iRealease2的全文检索
- SQL2005实现全文检索的步骤是什么?
- 全文检索引擎的实现问题
- Lucene实现在线全文检索的总结
- lucene实现全文检索的示例代码
- Lucene:实现数据库的全文检索
- 实现Django的全文检索:Haystack
- 3、Lucene实现全文检索的流程
- Lucene实现简单的全文检索
- #define 和 typedef的区别
- JavaScript 的性能优化:加载和执行 .
- 由纠音引发
- SQL 实现嵌套查询
- WNR2200可以正常地使用OpenWRT了。
- 用CSS3实现客户端的全文检索
- 基于MINA的网络应用程序架构
- Android 中点击空白处隐藏软键盘
- Python中的切片
- hadoop配置 - using the other hard disks
- 服务生成javacore 和heapdump
- CSS+DIV中的位置常用标签
- 图形与java2D小结与经验
- android 调用自己写的C函数库 代码