ドロワーメニュー

ページの隅っこにあるやのアイコンをタップするとメニューがスライドしてくるの、よく見かけますね。引き出しみたいに出し入れできるメニューだからドロワーメニューとかって言います。ここではそんなドロワーメニューをCSSで作ってみます。
開閉する仕組み
メニューが開閉する仕組みは、これまでのサンプル同様<input>と<label>を使った方法で、今回はラジオボタンじゃなくて、チェックボックスを使います:)。
ページ全体のHTMLの構造は以下の通り。
<body>
<input type="checkbox" id="drawer">
<label for="drawer" class="open"></label>
<label for="drawer" class="close"></label>
<nav class="menu">
⋮
</nav>
<div class="contents">
<header>
⋮
</header>
<article>
⋮
</article>
<footer>
⋮
</footer>
</div>
</body>メニューを開閉するためのボタンとなるlabel要素は2つ用意しておき、ひとつは開く・閉じるの両用、もうひとつを閉じる用としておきます。
両用の<label for="drawer" class="open">は、常に見えているボタンの形をしたもの。閉じる用の<label for="drawer" class="close">は、全面を覆うように固定配置しておきます。
そして、スイッチの役割となるチェックボックスは、ページの先頭に設置。
これが:checkedになった時に、それ以降の兄弟要素<label>と<nav>のスタイルを変える仕組みです。
全面を覆っている閉じるボタンは、メニューが閉じている時はpointer-events: noneでポインターでの操作を無効にしておき、メニューが開いた時にはautoにして、クリックできるようにします。スライドショーの矢印ボタンの時と同じ方法ですね;)。
.close {
z-index: 1;
inset: 0;
pointer-events: none;
transition: background-color .6s;
}
#drawer:checked ~ .close {
pointer-events: auto;
background-color: rgba(0,0,0,.3);
}pointer-events: noneでポインターイベントが無効になるので、前面を覆っていても、その下のコンテンツには触ることができるってわけ:D。