これは少しアップデートです。 CBroeはコメントで述べたように、あなたは、チェックボックスやCSSでこれを達成することができます
#toggle-button,
.menu-list {
display: none;
}
#toggle-button:checked + .menu-list {
display: block;
}
<label for="toggle-button">open/close</label>
<input type="checkbox" id="toggle-button" />
<div class="menu-list">Hello world</div>
ではなく、チェックボックスとラベルを使用し、:疑似クラスをチェックします。 - 以下CBroe 7
オリジナルポスト:
バニラJavaScriptのトグル方式のコメントで述べ
多くは、トグル方式を使用します。最も簡単な - 私の知る限りでは - HTMLElement#classList.toggle
を使用することです:あなたはまた、あなたのソリューションで行くことができるフォーカス/ぼかし
と
const menuList = document.querySelector('.menu-list');
document.querySelector('.toggle-button').addEventListener('click',() => {
menuList.classList.toggle('-visible');
});
.menu-list {
display: none;
}
.menu-list.-visible {
display: block;
}
<button class="toggle-button">open/close</button>
<div class="menu-list">Hello world</div>
バニラJavaScriptのトグル方式が、どういうわけか、必要に応じて(blur
)ボタンを非表示にする必要があります。
const menuList = document.querySelector('.menu-list');
const button = document.querySelector('.toggle-button');
let isVisible = false;
button.addEventListener('click',() => {
isVisible = !isVisible;
if (!isVisible) {
button.blur();
}
});
.menu-list {
display: none;
}
.toggle-button:focus + .menu-list {
display: block;
}
<button class="toggle-button">open/close</button>
<div class="menu-list">Hello world</div>
jQueryのトグル方式
そしてもちろんjQuery#toggleClass
との簡単な解決策は、同様に、まだあなたは既にjQueryのを使用しているときに有効なより多くがあります:
const $menuList = $('.menu-list');
$('.toggle-button').click(() => $menuList.toggleClass('-visible'));
.menu-list {
display: none;
}
.menu-list.-visible {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="toggle-button">open/close</button>
<div class="menu-list">Hello world</div>
あなたが「トグル」機能が必要な場合は、JavaScriptを使用しなければならない... –
代わりにチェックボックスとラベルを使用し、そして:擬似クラスをチェックします。 – CBroe
'.toggleClass()'を使用してください。 –