我有一个左边的菜单,当我点击它出现,并且有一个十字形按钮,当我点击它时,菜单消失,我需要关闭还有点击除了菜单以外的任何地方。
site link隐藏菜单,当点击页面的任何地方
(function() {
var bodyEl = document.body,
content = document.querySelector('.content-wrap'),
openbtn = document.getElementById('open-button'),
closebtn = document.getElementById('close-button'),
isOpen = false;
function init() {
initEvents();
}
function initEvents() {
openbtn.addEventListener('click', toggleMenu);
//bodyEl.addEventListener('click', toggleMenu); //
if(closebtn) {
closebtn.addEventListener('click', toggleMenu);
}
// close the menu element if the target it´s not the menu element or one of its descendants..
/**content.addEventListener('click', function(ev) {
var target = ev.target;
if(isOpen && target !== openbtn) {
toggleMenu();
}
}); */
}
function toggleMenu() {
if(isOpen) {
classie.remove(bodyEl, 'show-menu');
}
else {
classie.add(bodyEl, 'show-menu');
}
isOpen = !isOpen;
}
init();
})();
您可以创建小提琴/ plnkr? –
当菜单打开时,“创建一个EventListener”监听所有元素(主体)的点击,然后测试,如果点击是在菜单内或没有。菜单关闭时删除“EventListener”。 – dschu
它通常用一个透明的'div'来完成,整个屏幕上放置一个点击事件(带有z-index,因为这个div位于菜单后面,但位于内容之上)。当菜单关闭时,你必须隐藏div,当然 – Kaddath