【发布时间】:2019-09-22 12:11:24
【问题描述】:
我正在运行脚本以在带有滚动的菜单中显示通知,但我不知道如何检测设备是否具有方向景观以验证脚本。
调用onClick="VerHayMas();" 完美运行,但如果用户打开菜单一次,单击#boton-menu 并且您的设备处于纵向,在将方向更改为横向后,脚本不再符合目标。
仅当设备处于横向时,脚本才有其逻辑,即 当菜单需要显示通知时。
那么,我的脚本是否可能仅对(max-width:999px) and (orientation:landscape) 有效,而忽略了肖像...?
我是JS的初学者,真的不知道该怎么做。
有什么想法吗?
提前致谢!
HTML 和 CSS
#mas-menu {display:none}
<div id="boton-menu" onClick="VerHayMas();">+</div>
脚本:
var clicksVerHayMas = 0;
function VerHayMas() {
clicksVerHayMas = clicksVerHayMas + 1;
if (clicksVerHayMas == 1) {
document.getElementById('mas-menu').style.display = 'block';
window.setTimeout(function() {
$('#mas-menu').fadeOut('slow');
}, 4000);
}
};
编辑:
我已尝试使用以下脚本,但它不起作用。如果用户以纵向模式调用onClick="VerHayMas();",则脚本不再以横向模式运行。
我在这里做错了什么?
const matchesMediaQuery = window.matchMedia('(max-width:999px) and (orientation:landscape)').matches;
if (matchesMediaQuery) {
var clicksVerHayMas = 0;
function VerHayMas() {
clicksVerHayMas = clicksVerHayMas +1;
if(clicksVerHayMas == 1){
document.getElementById('mas-menu').style.display = 'block';
window.setTimeout(function(){
$('#mas-menu').fadeOut('slow');
},4000);
}};
}
【问题讨论】:
-
你可以分别用
window.innerHeight和window.innerWidth获取窗口的宽度和高度。保持简单如何,如果高度小于宽度,则用户处于横向模式。 -
如果你只是想在横向隐藏一些东西,为什么不使用一行CSS呢?
-
您将函数声明放在
if语句中的尝试不起作用,因为它不再是可以从内联事件处理程序属性调用的全局变量。
标签: javascript jquery