Filtrify 面板内搜索功能详解:标签中搜标签,键盘上下键秒选,打造流畅筛选体验
【免费下载链接】filtrifyBeautiful advanced tag filtering with HTML5 and jQuery项目地址: https://gitcode.com/gh_mirrors/fi/filtrify
Filtrify 是一个基于 HTML5 与 jQuery 的轻量级标签筛选插件,它最讨喜的设计之一就是筛选面板内的搜索功能:在标签列表里直接输入关键词“标签中搜标签”,再用键盘上下键秒选、回车确认,即可快速完成多标签过滤。本文面向新手,带你弄懂这套面板内搜索 + 键盘快捷选择的完整体验。
🎯 什么是 Filtrify:让 data 属性变成筛选菜单
Filtrify 的工作方式非常直接:页面上每个列表项通过data-*属性携带标签(如类型、演员、导演),插件启动后自动解析出所有分类和标签,并在指定占位区生成一个筛选菜单。
点击某个分类标签,会弹出一个筛选面板(panel)。面板由四部分构成,搜索框是其中的核心:
| 面板组件 | 作用 |
|---|---|
搜索框ft-search | 输入关键词,实时过滤面板内的标签列表 |
已选区ft-selected | 展示当前已选中的标签,点击可取消 |
标签列表ft-tags | 全部标签,按字母排序,附匹配数量 |
无结果提示ft-mismatch | 搜索无匹配时显示 “No results match ...” |
面板、搜索框、高亮样式均定义在css/filtrify.css中,逻辑集中在js/filtrify.js(生产环境可直接引用压缩版js/filtrify.min.js)。
🔍 “标签中搜标签”:面板内搜索的 4 个行为细节
打开任意分类面板后,搜索框会自动获得焦点(见js/filtrify.js中的openPanel与bringToFront方法),你可以立刻开始打字。它的行为有四个值得注意的细节:
- 实时过滤,无需回车:每输入一个字符,不匹配的标签立即隐藏,命中的标签保持可见,第一个命中项自动获得高亮。
- 忽略大小写:匹配时对输入与标签文本同时转大写比较,输 “nolan” 和 “Nolan” 效果一致。
- 已选标签不受搜索影响:当前已选中的标签在搜索时不会被隐藏,保证已选状态始终可见、可撤销。
- 无匹配友好提示:如果一个标签都搜不到,面板会显示
No results match "关键词",文案可通过noresults选项自定义;重新清空输入后提示自动消失。
另外,面板一旦关闭,搜索框和标签列表会自动重置(resetSearch方法),下次打开仍是完整状态,不会“脏”掉你的筛选条件。
⌨️ 键盘上下键秒选:从搜索到过滤只需 3 个键
搜索只是第一步,Filtrify 把“找到 → 选中 → 过滤”压缩成了纯键盘操作,全程不用碰鼠标:
| 按键 | 行为 |
|---|---|
| ↓ 下方向键 | 高亮移动到下一个可见标签,高亮自动向下滚动跟随 |
| ↑ 上方向键 | 高亮移动到上一个可见标签,自动向上滚动 |
| Enter 回车 | 确认当前高亮:加入已选区、更新查询、列表立即重新过滤 |
这套键盘逻辑位于js/filtrify.js的events方法中(监听keydown/keyup,键码 38、40 为上下方向键,13 为回车)。几个细节让体验格外顺滑:
- 首次按方向键:若当前没有高亮项,会自动选中第一个可见标签,按下一次就有反馈,不会“空转”。
- 自动防溢出滚动:
preventOverflow方法会检测高亮项是否被列表滚动条“切掉”,越界时自动把列表滚动到合适位置,高亮永远在视野内。 - 方向键不会打断输入:
keyup阶段会拦截上下方向键,避免方向键意外把焦点移出搜索框,你可以边打字边上下翻。 - 重复点击即取消:已选中的标签再按一次回车会被移出查询,配合列表实时刷新,改条件非常灵活。
🎬 实战示例:在电影库里秒选“诺兰的科幻片”
示例页movies.html(多分类演示)为 190 余部影片挂载了三个标签分类:data-genre(类型)、data-main-actors(主演)、data-director(导演)。以“找诺兰的科幻片”为例:
- 点击director面板标签,搜索框自动聚焦;
- 输入 “Nolan”,标签列表瞬间收敛到 Christopher Nolan 一项;
- 按 Enter,Nolan 进入已选区,影片列表只剩他的作品;
- 再打开genre面板,输入 “Sci-Fi”,上下键翻到 Sci-Fi 后回车。
两步键盘操作,列表实时收敛到“诺兰执导的科幻片”。单分类场景可参考music.html;更多用法见query.html(带初始查询启动)、trigger.html(程序触发查询)、reset.html(一键重置筛选)、close.html(选中后自动关闭面板)、block.html(排除特定 data 属性不生成分类)。
✅ 给初学者的 3 条实用建议
- 标签多的场景优先用面板内搜索:几十个标签靠肉眼找很慢,输入 + 方向键 + 回车是效率最高的路径。
- 自定义无结果文案:中文项目建议通过
noresults选项把默认英文提示改成自己的文案,更贴合用户语境。 - 配合
close选项做精简交互:选完即关面板,适合移动端或卡片流页面,进一步减少操作步骤。
📁 相关文件速览
| 文件 | 说明 |
|---|---|
js/filtrify.js | 插件完整源码,面板内搜索与键盘选择逻辑在events、search、moveHighlight方法中 |
js/filtrify.min.js | 压缩版,生产环境直接引用 |
css/filtrify.css | 面板、搜索框、高亮与滚动条样式 |
movies.html | 多分类(类型/演员/导演)完整示例 |
music.html | 单分类示例 |
query.html、trigger.html、reset.html | 程序化查询、触发与重置示例 |
close.html、block.html | 自动关面板、屏蔽指定属性的示例 |
从输入关键词到标签列表收敛,再到方向键秒选、回车过滤,Filtrify 的面板内搜索把“多标签筛选”这件繁琐的事,变成了一连串轻快的键盘操作——这正是它被称为“beautiful advanced tag filtering”的原因。
【免费下载链接】filtrifyBeautiful advanced tag filtering with HTML5 and jQuery项目地址: https://gitcode.com/gh_mirrors/fi/filtrify
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考