私は左メニューを持っていますが、クリックするとidの十字ボタンがクリックされたときにメニューが消え、メニュー以外の場所をクリックすると閉じる必要があります。
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();
})();
のように見えますか? –
メニューが開いたら、 'create EventListener'はすべての要素(body)をクリックして聞いてきて、そのクリックがメニュー内にあるかどうかをテストします。メニューが閉じたときに 'EventListener'を削除してください。 – dschu
これは通常、画面全体を取る透明な 'div'で行われます。ここでは、クリックイベントを表示します(このdivはメニューの後ろにありますが、コンテンツの上にあります)。メニューが閉じているときにdivを非表示にする必要があります。もちろん、 – Kaddath