記事のタイトルの日本語が難しかったのでChatGPTに考えてもらいました。ありがとう技術。
さて、タイトルからしてどこにでもありそうなナビゲーションですが、全くもってその通りです。よろしくおねがいします。
ソースコード
html
<div id="mymenubtn">開閉</div>
<ul class="hidden" id="mymenu">
<li><a href="#">リンク</a></li>
<li><a href="#">リンク</a></li>
<li><a href="#">リンク</a></li>
</ul>
css
#mymenu.hidden{
display: none;
}
javascript
const menuId = 'mymenu', menuBtnId = 'mymenubtn'
const menuObj = document.querySelector(`#${menuId}`); //メニュー本体
let isActiveMenu = false;
document.addEventListener('click', (e) => {
if(e.target.closest(`#${menuBtnId}`)) {
isActiveMenu = !isActiveMenu;
}else if(isActiveMenu && !e.target.closest(`#${menuId}`)){
isActiveMenu = false;
}
isActiveMenu ? menuObj.classList.remove('hidden') : menuObj.classList.add('hidden');
});
振り返り
この部分、もう少しかっこよく書きたいなと思いました。
isActiveMenu ? menuObj.classList.remove('hidden') : menuObj.classList.add('hidden');
JavaScriptを書いてたら、ちょうどわかりやすいES2015っぽさ(const/let, テンプレートリテラル, アロー関数, 三項演算子)が出てなんか嬉しかったので集中力が切れ、今こうしてブログを書いています。
おわり🏆