本記事ではCSSだけでハンバーガーメニューを実装します。
##前提条件
・javascriptは書かない
・id属性は使用しない。
・SCSSで書く
とりあえず完成品
See the Pen oNbXdyR by HoRnet2641XX (@hornet2641xx) on CodePen.
##解説とポイント(自分が最初わからなかったところ)
###解説
・CSSだけで行う場合はinput
のchecked
で制御する
・アイコンも書いているけど、まぁスクリプト書くならどっかからアイコン持ってきてもいいのかなとは思う
・メニューの展開時は画面全体を暗くするようにoverlayを作る
##ポイント
###紐付けについて。
idを使用した実装方法。
input
タグにid属性を指定して、label
タグに同じ値を設定することで、input
とlabel
を紐づける方法。
一例
<input type="checkbox" id="drawer__box">
<label for="drawer__box" class="drawer__icon">
<span class="icon__parts"></span>
</label>
ここでid属性を使ってしまうと、メリットよりデメリットが多くなってしまいます。。
もちろんid属性を指定するメリットはたくさんあります(DOMの要素速度の取得速度の向上や、視認性の高さなど)が、
class
でできるならその方がいいですよね。
上のコードをid
ではなく、class
にする場合は以下のようにして紐づけることができます。
<label class="drawer__icon">
<input class="drawer__toggle" type="checkbox" >
<span class="drawer__icon__parts"></span>
</label>
変更点はinput
タグをlabel
タグで囲んであげるだけです。
classとidが散乱していないので上のコードより見やすいかなと個人的には思います。