【问题标题】:MMenu right after body tagMMenu 紧跟在 body 标记之后
【发布时间】:2020-01-22 18:41:00
【问题描述】:

无论如何可以将 MMenu 导航移动到另一个 div 中,并在标题中?由于可访问性,我需要导航直接跟随打开和关闭移动导航的按钮。现在 nav 在开始的 body 标记之后插入。

    $("#mmenu").mmenu({
        // options
        offCanvas: {
            position: "right"
        },
        navbars: [
            {
                position: "top",
                height: 1,
                content: [
                    mmenuBookingHtml
                ]
            },
            {
                position: "bottom",
                height: 1,
                content: [
                    mmenuSocialHtml
                ]
            },
            {
                position: "bottom",
                height: 1,
                content: [
                    mmenuPhoneHtml
                ]
            },
            {
                position: "bottom",
                height: 1,
                content: [
                    mmenuSearchHtml
                ]
            }
        ]
    }, {
        // configuration
        offCanvas: {
            pageSelector: ".body-overlay"
        }
    });
                <a class="toggle-mmenu" href="#mmenu" aria-control="#mmenu" aria-expanded="false">
                    <span class="toggle-mmenu__wrap">
                        <span class="toggle-mmenu__bar"></span>
                        <span class="toggle-mmenu__bar"></span>
                        <span class="toggle-mmenu__bar"></span>
                    </span>
                </a>
<?php get_template_part('nav', 'mobile'); ?>

【问题讨论】:

  • 你能分享你的代码吗?
  • 您是否使用其中一个插件(例如 WordPress 插件)来生成代码?

标签: jquery mmenu


【解决方案1】:

MMenu 有一个config option:

menu: {
    insertMethod: 'prepend',
    insertSelector: 'body'
}

这告诉它将它添加到 HTML BODY 标记之前。它未在explained config options 中列出,但在source code 中存在。正如您在source code on line 53 中看到的那样,它使用这个 insertSelector 来选择要在附近注入菜单 HTML 的标签或类。您应该能够通过新的 insertSelector 选项传入一组配置选项,或者在最坏的情况下修改您的源 JS 以硬编码一个新的选择器以使其注入您想要的位置。

但是,这样做可能会使菜单表现得不稳定。菜单使用固定的 CSS 定位。将它放在另一个也有固定或绝对定位的 CSS 中可能意味着菜单出现在一个奇怪的位置或行为奇怪,因为它现在继承自父容器的 CSS 和定位。没有测试就无法判断(没有看到您网站上的所有 CSS 以及它如何与菜单的 CSS 交互)。但是您可以尝试看看它是否适合您的情况。我假设他们将它添加到 BODY 标签以避免这些可能的问题。

【讨论】:

  • 所以除了我要花时间弄清楚如何传递一组配置选项之外,尝试修复所有定位可能需要更多时间?所以我听到的只是建立我自己的。
  • 传递配置选项并不难;您在创建 MMenu 对象时执行此操作。如果您已经实现了 MMenu,那么值得花几分钟尝试。但如果定位明显被抬高,那么是的,我会放弃它。
  • 我正在开发一个已经构建好的 MMenu。你说我必须创建一个新的才能更改配置选项?
  • 没有。您可以编辑项目中安装的代码的源代码文件吗?这是最简单的。只需在文件中更改上面源代码链接中的配置对象,并将“insertSelector”选项更改为“.toggle-mmenu”而不是“body”。
  • 我尝试更改正在初始化 MMenu 的 insertSelector,这是我在上面粘贴的代码。菜单仍被附加在开始正文标记之后。重新配置后是否需要重新下载MMenu的主要css或js文件?
猜你喜欢
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多