【问题标题】:Need mmenu to react differently on desktops and mobile devices需要 mmenu 在台式机和移动设备上做出不同的反应
【发布时间】:2020-03-28 00:30:50
【问题描述】:

我已经完成所有 mmenu 设置,并且可以在移动设备上完美运行,但希望桌面的行为有所不同。

移动设备:

  • 页面加载时关闭
  • 使屏幕的其他部分变暗
  • 打开时移动页面内容
  • 可以通过 CSS 汉堡图标打开或关闭

桌面:

  • 在页面加载时打开(无过渡,只是完全打开和静态)
  • 无调光
  • 打开时页面内容不移动
  • 始终打开,无法关闭

我想我正在寻找适用于桌面的 offCanvas 选项(不完全确定),但无法弄清楚如何进行媒体查询以根据屏幕尺寸在 javascript 中放入不同的参数。

也许我想错了,还有另一种方法可以做到这一点?希望在这里得到一些帮助。

【问题讨论】:

标签: javascript jquery responsive-design mmenu


【解决方案1】:

因为我已经让移动设备完全按照我想要的方式工作,但需要桌面做出不同的响应,所以我是这样工作的(上面在原始帖子中描述了配置):

我做的第一件事是将整个 js 包装在一个带有 if/else 媒体查询的函数中,如下所示:

        <!-- Fire the plugin -->

        <script>
function mediaqueryresponse(x) {
if (mql.matches)
             {
            document.addEventListener(
                "DOMContentLoaded", () => {
                   new Mmenu( "#navmenu", {
                       "openingInterval": 0,
                       "transitionDuration": 0,
                       "sidebar": 
                          {
                          "expanded":
                              {
                              "use": true
                              }
                          },
                       "offCanvas": ["false"],
//                          {
//                          "blockUI": false,
//                          "moveBackground": false
//                          },
                       wrappers: ["bootstrap"],
                       "extensions": [
                          "position-front",
                          "fx-panels-none",
                          "theme-dark"
                       ],
                       "navbar": 
                          {
                                "title": "MY MENU"
                          },
                       "navbars": [
                          {
                             "position": "top",
                             "content": [
                                "prev",
                                "title"
                             ],
                          },
                          {
                             "position": "bottom",
                             "content": [
                                "<a class='fa fa-envelope' href='mailto:webmaster@foo.com'></a>",
                                "<a class='fa fa-twitter' href='https://www.twitter.com/foo'></a>",
                                "<a class='fa fa-facebook' href='fb://profile/13435468413'></a>"
                             ]
                          }
                       ]
                    });
                }
            );
}
else
             {
            document.addEventListener(
                "DOMContentLoaded", () => {
                    new Mmenu( "#navmenu", {
                       wrappers: ["bootstrap"],
                       "extensions": [
                          "position-front",
                          "pagedim-black",
                          "theme-dark"
                       ],
                       "navbar": 
                          {
                                "title": "MY MENU"
                          },
                       "navbars": [
                          {
                             "position": "top",
                             "content": [
                                "prev",
                                "title"
                             ],
                          },
                          {
                             "position": "bottom",
                             "content": [
                                "<a class='fa fa-envelope' href='mailto:webmaster@foo.com'></a>",
                                "<a class='fa fa-twitter' href='https://www.twitter.com/foo'></a>",
                                "<a class='fa fa-facebook' href='fb://profile/13435468413'></a>"
                             ]
                          }
                       ]
                    });
                }
            );
}
}
var mql = window.matchMedia("screen and (min-width: 900px) and (orientation:landscape)")
mediaqueryresponse(mql) // call listener function explicitly at run time
mql.addListener(mediaqueryresponse) // attach listener function to listen in on state changes
        </script>

需要修改的CSS代码是:

.mm-menu_position-front {
transition: transform 0s ease,-webkit-transform 0s ease !important;
}

.mm-wrapper_sidebar-expanded:not(.mm-wrapper_sidebar-closed) .mm-menu_sidebar-expanded.mm-menu_opened~.mm-slideout {
width:100% !important;
-webkit-transform:translate3d(0,0,0) !important;
transform:translate3d(0,0,0) !important;
width:100% !important;
-webkit-transform:translate3d(0,0,0);
transform:translate3d(0,0,0);
}

请记住,还要将相同的 CSS 插入到您的移动样式表中,以便移动设备可以做出不同的响应。例如,我通过将以下代码插入到我的移动样式表中,将其全部恢复为 mmenu 的默认值:

.mm-menu_position-front {
transition: transform .4s ease,-webkit-transform .4s ease !important;
}

.mm-wrapper_sidebar-expanded:not(.mm-wrapper_sidebar-closed) .mm-menu_sidebar-expanded.mm-menu_opened~.mm-slideout {
width:(100% - 440px);
-webkit-transform:translate3d(440px,0,0);
transform:translate3d(440px,0,0);
width:calc(100% - var(--mm-sidebar-expanded-size));
-webkit-transform:translate3d(var(--mm-sidebar-expanded-size),0,0);
transform:translate3d(var(--mm-sidebar-expanded-size),0,0);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 2021-04-26
    • 1970-01-01
    • 2016-11-13
    • 2010-12-19
    • 1970-01-01
    • 2014-04-02
    • 2014-09-13
    相关资源
    最近更新 更多