我有一個左邊的菜單,當我點擊它出現,並且有一個十字形按鈕,當我點擊它時,菜單消失,我需要關閉還有點擊除了菜單以外的任何地方。
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