Mmenu是一个简单而强大的JavaScript/jQuery插件,用于为您的移动网站创建响应迅速、可访问、模块化、灵活、移动友好和类似应用程序的滑动菜单,所有这些都具有无限数量的子菜单。
它支持垂直或水平滑动子菜单和固定标题。
根据CC-BY-NC-4.0许可证进行许可。兼容Bootstrap 4和Bootstrap 3。
该插件还附带了Light(紧凑型)版本,您可以在此处查看mmenu Light插件。
最新的Mmenu(8.0+)已经删除了jQuery依赖项。
对于jQuery用户,请在此处下载Mmenu 7.x。
- # NPM
- $ npm install jquery.mmenu
- # Bower
- $ bower install jquery.mmenu
1.在网页上包含Mmenu插件的JavaScript。
- <!-- v8 Vanilla JS Version -->
- <!-- polyfills are needed for Internet Explorer 10 and 11 -->
- <script src="mmenu.js"></script>
- <script src="mmenu.polyfills.js"></script>
- <!-- v7 jQuery Version -->
- <script src="jquery.min.js"></script>
- <script src="jquery.mmenu.js"></script>
2.在页面上包含所需的CSS文件。
- <!-- v8 Vanilla JS Version -->
- <link rel="stylesheet" href="mmenu.css" />
- <!-- v7 jQuery Version -->
- <link rel="stylesheet" href="jquery.mmenu.css" />
3.在页面上包含您选择的扩展。所有可能的CSS扩展:
- // v8 Vanilla JS Version
- document.addEventListener(
- "DOMContentLoaded", () => {
- new Mmenu( "nav#menu",{
- extensions: ["border-full"]
- });
- }
- );
- // v7 jQuery Version
- $(function() {
- $('nav#menu').mmenu({
- extensions: ["border-full"]
- });
- });
4.为菜单创建一个导航列表。该插件支持使用嵌套HTML列表的多级导航菜单。
- <nav id="menu">
- <ul>
- <li><a href="#">Home</a></li>
- <li><span>About us</span>
- <ul>
- <li><a href="#">History</a></li>
- <li><span>The team</span>
- <ul>
- <li><a href="#">Management</a></li>
- <li><a href="#">Sales</a></li>
- <li><a href="#">Development</a></li>
- </ul>
- </li>
- <li><a href="#">Our address</a></li>
- </ul>
- </li>
- <li><a href="#">Contact</a></li>
- <li class="Divider">Other demos</li>
- <li><a href="#">Advanced demo</a></li>
- </ul>
- </nav>
5.创建一个汉堡包按钮来切换菜单。
- <a href="#menu"><span></span></a>
6.将插件附加到导航列表以初始化mmenu。
- // v8 Vanilla JS Version
- document.addEventListener(
- "DOMContentLoaded", () => {
- new Mmenu( "nav#menu" );
- }
- );
- // v7 jQuery Version
- $(function() {
- $('nav#menu').mmenu();
- });
7.自定义菜单的默认选项。
- new Mmenu( "nav#menu",{
- // A collection of extension names to enable for the menu.
- extensions: [],
- // navbar options
- navbar: {
- add: true,
- sticky: true,
- title: "Menu",
- titleLink: "parent"
- },
- onClick: {
- // whether or not the menu should close after clicking a link inside it.
- close: false,
- // prevent the default behavior for the clicked link
- preventDefault: null,
- // the clicked link should be visibly "selected".
- setSelected : true
- },
- // the submenus comes sliding in from the right.
- slidingSubmenus: true,
- // a collection of framework wrappers to enable for the menu.
- wrappers: [],
- // off-canvas addon options
- offCanvas: {
- // Whether or not to block the user from using the page while the menu is opened.
- // If set to "modal", clicking outside the menu does not close it.
- blockUI: true,
- // Whether or not the page should inherit the background of the body when the menu opens.
- moveBackground: true
- },
- // Screen reader addon options
- screenReader: {
- // Whether or not to automatically add and update the aria-hidden and aria-haspopup attributes.
- aria: true ,
- // Whether or not to add a "screen reader only" text for anchors that normally don't have text.
- text: true
- },
- // Scroll bug fix addon options
- scrollBugFix: {
- fix: true // fix the scroll bug on touchscreens
- }
- });
8.可以作为第三个参数传递给mmenu方法的可能配置。
- new Mmenu( "nav#menu",{
- // options here
- },{
- // CSS classes
- classNames: {
- divider: "Divider",
- inset: "Inset",
- panel: "Panel",
- selected: "Selected",
- spacer: "Spacer",
- vertical: "Vertical"
- },
- // supported languages: "de", "en", "fa", "nl", "ru"
- language: 'en',
- // The number of milliseconds between opening/closing the menu and panels,
- // needed to force CSS transitions.
- openingInterval: 25,
- // jQuery selector containing the node-type of panels.
- panelNodetype: 'ul, ol, div',
- // The number of milliseconds used in the CSS transitions.
- transitionDuration: 400,
- // off-canvas addon configs
- offCanvas: {
- // Whether or not to clone the original menu
- clone: false,
- // Whether or not the page should inherit the background of the body when the menu opens.
- menu: {
- // how to insert the menu
- // "prepend" or "append"
- insertMethod: "prepend",
- // where to insert the menu
- insertSelector: "body"
- },
- page: {
- // page node
- nodetype: "div",
- // default selector
- selector: "body > ",
- // array of query selectors to exclude from the page.
- noSelector: []
- },
- },
- // Screen reader addon configs
- screenReader: {
- text: {
- closeMenu: "Close menu",
- closeSubmenu: "Close submenu",
- openSubmenu: "Open submenu",
- toggleSubmenu: "Toggle submenu"
- }
- }
- });
9.API方法。
- // v8 Vanilla JS Version
- document.addEventListener(
- "DOMContentLoaded", () => {
- const myMenu = Mmenu( "nav#menu");
- const api = myMenu.API;
- }
- );
- // v7 jQuery Version
- $(function() {
- var $myMenu = $('nav#menu').mmenu();
- var api = $myMenu.data( "mmenu" );
- });
- // close all menus
- api.closeAllPanels();
- // close a specific menu
- api.closePanel(Panel);
- // initialize a new menu
- api.initPanel(Panel);
- // select an item
- api.setSelected(listitem);
10.事件处理程序。
- // v8 Vanilla JS Version
- document.addEventListener(
- "DOMContentLoaded", () => {
- new Mmenu( "nav#menu",{
- hooks: {
- "closeAllPanels:before": ( panel ) => {
- // do something
- },
- "closeAllPanels:after": ( panel ) => {
- // do something
- },
- "closePanel:before": ( panel ) => {
- // do something
- },
- "closePanel": ( panel ) => {
- // do something
- },
- "closePanel:after": ( panel ) => {
- // do something
- },
- "openPanel:before": ( panel ) => {
- // do something
- },
- "openPanel:start": ( panel ) => {
- // do something
- },
- "openPanel:finish": ( panel ) => {
- // do something
- },
- "openPanel:after": ( panel ) => {
- // do something
- },
- "setSelected:before": ( panel ) => {
- // do something
- },
- "setSelected:after": ( panel ) => {
- // do something
- },
- }
- });
- }
- );
- // v7 jQuery Version
- $(function() {
- var $myMenu = $('nav#menu').mmenu();
- var api = $myMenu.data( "mmenu" );
- api.on(EVENTNAME,
- ( panel ) => {
- // do something
- });
- )
- });
版本9.3.0(2023-01-07)
版本9.2.3(2022-12-24)
版本9.2.2(2022-11-21)
版本9.2.1(2022-11-14)
版本9.2.0(2022-08-19)
版本9.1.6(2022-04-06)
版本9.1.5(2022-04-05)
版本9.1.2/3/4(2022-04-03)
版本9.1.1(2022-03-24)
版本9.1.0(2022-03-05)
版本9.0.4(2022-02-01)
版本9.0.3(2022-01-28)
v9.0.0/1 (2021-11-25)
v8.5.24 (2021-06-22)
v8.5.23 (2021-05-07)
v8.5.22 (2021-03-22)
v8.5.21 (2021-01-18)
版本8.5.20(2020-11-15)
第8.5.19版(2020-10-16)
第8.5.18版(2020-10-04)
第8.5.17版(2020-09-22)
第8.5.16版(2020-09-02)
第8.5.15版(2020-08-20)
第8.5.14版(2020-07-10)
第8.5.12版(2020-06-01)
第8.5.11版(2020-05-25)
第8.5.10版(2020-05-20)
第8.5.9版(2020-05-14)
第8.5.8版(2020-05-13)
第8.5.5版(2020-04-26)
第8.5.4版(2020-04-17)
第8.5.3版(2020-03-22)
第8.5.2版(2020-03-17)
第8.5.1版(2020-03-12)
第8.5.0版(2020-02-28)
第8.4.7版(2020-02-13)
第8.4.6版(2020-01-08)
第8.4.5版(2019-12-30)
第8.4.4版(2019-12-22)
第8.4.3版(2019-11-25)
第8.4.2版(2019-11-24)
第8.4.1版(2019-10-25)
第8.3.0版(2019-09-06)
第8.2.3版(2019-08-12)
v8.2.2(2019年7月19日)
第8.2.1版(2019-07-13)
第8.1.1版(2019-06-04)
版本8.0.8(2019-05-25)
版本8.0.7(2019-05-22)
版本8.0.6(2019-05-05)
版本8.0.5(2019-05-02)
版本8.0.4(2019年4月19日)
版本8.0.3(2019-04-16)
第7.3.3版(2019-03-14)
第7.3.2版(2019-02-21)
v7.3.1(2019年2月19日)
7.3版(2019-02-14)
第7.2.3版(2019-02-03)
第7.2.2版(2018-11-09)
v7.2.0(2018年9月23日)
v7.1.0(2018年9月14日)
v7.0.6(2018年07月06日)
v7.0.5 (2018-06-15)
版本7.0.4(2018-06-13)
v7.0.3(2018年2月10日)
v7.0.1(2018年01月06日)
v7.0.0(2018年01月06日)