非特定領域を特定するクリック(イベント)
1407 ワード
実施希望内容
右上のアウトライン画像をクリックすると、次のメニューボックスが表示されます.
ここで、右上隅の梁画像以外の領域を再度クリックして、メニューボックスを消去します.
失敗
表示値を「none」と「block」に変換して、クリックした要素とクリックしない要素を区別しようとします(this==右上輪郭画像要素)
=>ただし、右上隅の梁画像elemnet以外の領域をクリックすると、イベント気泡化現象のため、右上隅の梁画像を含むすべての含む関係のelementがここにインポートされる可能性があります.条件式が常に偽/であり、e.stopPropagation()で解決しようとする場合、は解決できません.
そして、解決(最終コード)
const navProfile = document.querySelector('#profileImg');
const menuContainer = document.querySelector('.menuContainer');
const body = document.querySelector('body');
function showMenu(e) {
if (e.target == navProfile) {
const coordinate = this.getBoundingClientRect();
const targetBottom = coordinate.bottom;
const targetLeft = coordinate.left;
menuContainer.top = `${targetBottom + 20}px`;
menuContainer.left = targetLeft;
menuContainer.style.display = 'block';
} else {
menuContainer.style.display = 'none';
}
}
body.addEventListener('click', showMenu);
Reference
この問題について(非特定領域を特定するクリック(イベント)), 我々は、より多くの情報をここで見つけました https://velog.io/@mementomori/특정-영역-이외의-클릭event-인식Listenテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol