jquery mmenu 默认打开

jquery mmenu opens by default

我已经建立了一个新页面并添加了 jQuery.mmenu。现在,当我加载页面时,默认情况下 mmenu 已经打开。

mmenu 在页面加载时触发并在正文中添加 mm-opened。然后 css 转换开始,mmenu 被很好地打开。

但我希望它只在单击菜单按钮时打开。很奇怪。有人以前听过这个吗?

jquery:

$(document).ready(function() {
  $("#my-menu").mmenu();
});

html:

<body>
   <nav id="my-menu">
     <ul>
        <li><a href="{{item.url }}" class="no-barba">But WHy?</a></li>
     </ul>
   </nav>
  <div>//content</div>
</body>

标记中没什么特别的

将此添加到您的 css 样式表并进行测试:

#my-menu:not(.mm-menu) {
  display: none;
}

将 "mm-wrapper_sidebar-closed" class 添加到 html 标签。

我在html中添加了(javascript):

window.location.hash = "菜单";

Ivan,我给你投了赞成票,因为它让我意识到我的问题与哈希有关,谢谢 :)。

如果您不使用 JS 以编程方式打开 mmenu,它会指示您将 link 的 href 属性 设置为您要打开的菜单的选择器。所以我有类似的东西:

<a href="#navbar-menu"> ... </a>

以 ID 为 navbar-menu 的菜单选择器为目标。我没有意识到的是,在我所有的 JS 代码就位之前我已经点击了这个 link,所以当前的 URL 仍然有一个指向菜单选择器的散列。例如

https://yourdomain.com/#navbar-menu

我会刷新页面,菜单会自动打开。因为 mmenu 允许你使用一个 hash 来定义菜单的状态——当菜单选择器对应的 hash 在 URL.

时打开

仅供 运行 遇到相同问题的任何人参考。如果菜单自动打开,请删除哈希。

您可以使用侧边栏插件下的“初始”选项。

    sidebar: {
        collapsed: {
            use: '(min-width: 450px)',
            hideNavbar: false,
        },
        expanded: {
            use: '(min-width: 992px)',
            initial: 'closed'
        },
    },

参考:https://github.com/FrDH/mmenu-js/issues/967