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日)