需要 mmenu 在桌面和移动设备上做出不同的反应
Need mmenu to react differently on desktops and mobile devices
我有 mmenu 所有设置并在移动设备上完美运行,但希望桌面的行为有所不同。
移动设备:
- 页面加载时关闭
- 使屏幕的另一部分变暗
- 打开时移动页面内容
- 可以通过 css 汉堡图标打开或关闭
桌面:
- 在页面加载时打开(无过渡,只是完全打开和静态)
- 无调光
- 打开时不移动页面内容
- 常开,不可关闭
我想我正在寻找桌面的 offCanvas 选项(不完全确定)但无法弄清楚如何进行媒体查询以根据屏幕尺寸在 javascript 中放入不同的参数。
也许我想错了,还有另一种方法可以实现吗?希望在这里得到一些帮助。
因为我已经让移动设备完全按照我想要的方式工作,但需要桌面做出不同的响应,下面是我如何让它工作的(配置在上面的原始 post 中描述):
我做的第一件事是包装整个 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);
}
我有 mmenu 所有设置并在移动设备上完美运行,但希望桌面的行为有所不同。
移动设备:
- 页面加载时关闭
- 使屏幕的另一部分变暗
- 打开时移动页面内容
- 可以通过 css 汉堡图标打开或关闭
桌面:
- 在页面加载时打开(无过渡,只是完全打开和静态)
- 无调光
- 打开时不移动页面内容
- 常开,不可关闭
我想我正在寻找桌面的 offCanvas 选项(不完全确定)但无法弄清楚如何进行媒体查询以根据屏幕尺寸在 javascript 中放入不同的参数。
也许我想错了,还有另一种方法可以实现吗?希望在这里得到一些帮助。
因为我已经让移动设备完全按照我想要的方式工作,但需要桌面做出不同的响应,下面是我如何让它工作的(配置在上面的原始 post 中描述):
我做的第一件事是包装整个 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);
}