今天我在实现侧滑菜单栏的时候,弹出遮罩层时闪烁了一下,求大神帮忙解释一下,本人小白,刚开始学习mui,在仿照hello mui的时候遇见的问题,代码如下:
var showMenu = false;
var isInTransition = false;
/**
* 显示侧滑菜单
*/
function openMenu() {
if (isInTransition) {
return;
}
if (!showMenu) {
//侧滑菜单处于隐藏状态,则立即显示出来;
isInTransition = true;
menu.setStyle({
mask: 'rgba(0,0,0,0.3)'
});
menu.show('none', 0, function() {
//主窗体开始侧滑并显示遮罩
main.setStyle({
mask: 'rgba(0,0,0,0.4)',
right: '70%',
transition: {
duration: 150
}
});
mui.later(function() {
isInTransition = false;
menu.setStyle({
mask: "none"
}); //移除menu的mask
}, 160);
showMenu = true;
});
}
};
/**
* 关闭菜单
*/
function closeMenu() {
if (isInTransition) {
return;
}
if (showMenu) {
//主窗体开始侧滑并关闭遮罩
isInTransition = true;
main.setStyle({
mask: 'none',
right: '0',
transition: {
duration: 200
}
});
showMenu = false;
//等动画结束后,隐藏菜单webview,节省资源;
mui.later(function() {
isInTransition = false;
menu.hide();
}, 300);
}
};
//点击左上角侧滑图标,打开侧滑菜单;
document.querySelector('.mui-icon-bars').addEventListener('tap', function(e) {
if (showMenu) {
closeMenu();
} else {
openMenu();
}
});
//主界面向左滑动,若菜单未显示,则显示菜单;否则不做任何操作
window.addEventListener("swipeleft", openMenu);
//主界面向右滑动,若菜单已显示,则关闭菜单;否则,不做任何操作;
window.addEventListener("swiperight", closeMenu);
mui.menu = function() {
if (showMenu) {
closeMenu();
} else {
openMenu();
}
}
1 个回复
民仔 (作者)
解决问题了,原因是我把menu的z-index改成100以后,顺序出了问题,这里不能移动主界面,而应该是主界面不动,菜单界面移动