news 2026/10/1 9:32:13

如何快速上手响应式侧边菜单Sidr:sidr.new与$.sidr双模式API全对比

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何快速上手响应式侧边菜单Sidr:sidr.new与$.sidr双模式API全对比

如何快速上手响应式侧边菜单Sidr:sidr.new与$.sidr双模式API全对比

【免费下载链接】sidrSidr is a jQuery plugin for creating side menus and the easiest way for doing your menu responsive.项目地址: https://gitcode.com/gh_mirrors/si/sidr

正在为网站加响应式侧边菜单?Sidr 同时提供两套 API:原生 JS 的sidr.new()与 jQuery 插件式的$.sidr(),一套代码、两种写法,零依赖也能做侧滑菜单。本文带你用 10 分钟对比两者的初始化方式、常用操作和选型建议,新手也能一次写对。

🧭 先认识 Sidr:一个插件,两种身份

Sidr 是一个用于创建侧边菜单(side menu)的轻量库,核心卖点就是让菜单快速变响应式:现代浏览器用 CSS3 过渡动画,不支持时自动回退到 jQuery.animate。

更关键的是它的"双模式"设计:

  • 原生 JS 模式:挂到window.sidr,不需要 jQuery,入口见 src/sidr.js
  • jQuery 插件模式:注册jQuery.sidr与jQuery.fn.sidr两个命名空间,入口见 src/jquery.sidr.js
// 原生模式:挂到 window.sidr window.sidr = sidr // jQuery 模式:双命名空间 jQuery.sidr = runner // 命令式:$.sidr('open', 'sidr') jQuery.fn.sidr = fnSidr // 插件式:$('#btn').sidr({ ... })

📋 双模式 API 一图对比

对比项原生 JS(sidr.new)jQuery($.sidr)
依赖无,纯原生需要 jQuery
初始化sidr.new('#btn', options)$('#btn').sidr(options)
打开菜单sidr.open('sidr')$.sidr('open', 'sidr')
关闭菜单sidr.close('sidr')$.sidr('close', 'sidr')
切换菜单sidr.toggle('sidr')$.sidr('toggle', 'sidr')
刷新内容sidr.reload('sidr')$.sidr('reload', 'sidr')
查询状态sidr.status()$.sidr('status')

两种模式共享同一套底层实现:菜单实例统一存放在 src/js/menu.store.js 的"菜单仓库"里,命令式操作(open/close/toggle/reload)都由 src/js/runner.js 统一分发,所以行为完全一致,只是调用姿势不同。

🚀 原生 JS 模式:用 sidr.new 初始化侧边栏

初始化只需一步:传入"触发按钮的选择器"和配置对象。sidr.new内部会完成"合并默认配置 → 创建菜单实例 → 给按钮绑定点击事件"三件事,源码见 src/js/sidr.js。

sidr.new('#simple-menu', { timing: 'ease-in-out', speed: 500 })

之后按钮点击会自动切换菜单;手动控制同样直观:

window.onresize = function () { sidr.close('sidr') // 窗口缩放时自动收起菜单 }

💡 状态查询返回一个{ moving, opened }对象(定义在 src/js/status.js),opened为 true 表示菜单当前展开,方便你在页面逻辑里做判断。

完整可运行的例子:examples/vanilla/simple-menu.html

📦 jQuery 插件模式:$.fn.sidr 与 $.sidr 分工

jQuery 模式下有两个容易混淆的命名空间,其实分工很清晰:

  • $('#btn').sidr(options)—— 插件式初始化,绑定在"触发按钮"上,源码见 src/js/jquery.fnSidr.js
  • $.sidr('method', name)—— 命令式控制,操作"已注册的菜单",源码见 src/js/runner.js
$(document).ready(function () { $('#simple-menu').sidr({ timing: 'ease-in-out', speed: 500 }) }) $(window).resize(function () { $.sidr('close', 'sidr') })

一个小技巧:$.sidr的第一个参数如果直接传函数,会被当作toggle的回调,省略菜单名时默认操作名为'sidr'的菜单(见 src/js/runner.js 的参数处理逻辑)。

完整可运行的例子:examples/jquery/simple-menu.html

⚖️ 选型指南:你的项目该用哪种写法?

选原生sidr.new的情况

  • 项目没有引入 jQuery,或正在做去 jQuery 化改造
  • 用模块化打包工具(项目自带 Rollup 构建,见 rollup.config.js)
  • 追求更小体积,侧边菜单只是页面一小部分功能

选$.sidr的情况

  • 老项目、后台系统已深度依赖 jQuery
  • 习惯$('.btn').plugin()的插件链式写法
  • 团队熟悉 jQuery 事件与 ready 生命周期

一句话总结:功能等价,写法随技术栈。两套 API 的方法名(open/close/toggle/reload/status)完全对齐,从 jQuery 版迁移到原生版几乎是机械替换,迁移成本极低。

⚙️ 常用配置速查(两种模式通用)

所有默认选项集中定义在 src/js/default.options.js:

选项默认值说明
name'sidr'菜单实例名,命令式 API 用它定位菜单
side'left'菜单从左侧还是右侧滑出
speed200动画时长,支持fast/normal/毫秒数
displacetrue打开时是否推挤(位移)正文内容
sourcenull覆盖菜单内容来源(支持远程内容)
bind'click'触发菜单的事件
onOpen/onClose空函数打开/关闭回调,常用于加遮罩

📌 多菜单场景下,给每个实例起不同name,再用sidr.open('name')或$.sidr('open', 'name')分别控制即可,参考 examples/README.md 中的 multiple-menus 示例。

🎯 小结

  • 响应式侧边菜单不需要二选一框架:有 jQuery 用$.sidr,无 jQuery 用sidr.new
  • 初始化只传"按钮选择器 + 配置",打开/关闭/切换/刷新四个命令两种模式完全同名
  • 更多场景(锚点菜单、全屏菜单、多回调、远程内容加载)可直接看 examples/ 目录下成对提供的 vanilla 与 jquery 两套示例,对照学习最快

掌握这套双模式 API 后,你只需几分钟就能给任何页面加一个丝滑的响应式侧滑菜单 🚀

【免费下载链接】sidrSidr is a jQuery plugin for creating side menus and the easiest way for doing your menu responsive.项目地址: https://gitcode.com/gh_mirrors/si/sidr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 9:32:11

Laravel 3深度回顾:定义PHP框架审美的设计

2012年那会儿,我做PHP用的还是CodeIgniter。谈不上痛不欲生,但每次往模板里拼字符串、在控制器里手写SQL的时候,总会陷入自我怀疑。直到某天在GitHub上刷到Laravel 3那句口号——为Web艺术家创造PHP框架——我一边觉得中二,一边忍…

作者头像 李华
网站建设 2026/10/1 9:30:50

配置GitHub Copilot连接MySQL:MCP协议实战全记录

最近很多人问我一个问题:GitHub Copilot 能不能不靠我复制粘贴,直接帮我查数据库、看表结构、跑个统计?答案是能,而且配置起来没有想象中那么玄乎,关键就是 MCP 这个名字。我花了一个下午把 Copilot、MCP、MySQL 这条链…

作者头像 李华
网站建设 2026/10/1 9:29:28

Idea maven安装及卸载本地jar包的正确方法

一、卸载本地jar包依赖;本地jar包位置:直接从本地仓库删除下面对应文件夹即可:无法从中央仓库下载依赖包;二、安装本地jar包依赖;打开cmd窗口,执行下面命令即可:mvn install:install-file -Dfil…

作者头像 李华
网站建设 2026/10/1 9:28:14

FinalShell密码无法查看?揭秘本地加密机制与安全替代方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华