【CSS】ハンバーガーメニューの実装方法!ばつ(×)印に変化させる

【CSS】ハンバーガーメニューの実装方法!ばつ(×)印に変化させる

この記事からわかること

  • CSSのみでハンバーガーメニュー実装方法
  • コード解説
  • ボタンクリックばつ(×)アニメーションさせるには?

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

CSSでハンバーガーメニューアイコンを実装する方法

サイトのナビゲーション上部に設置されることの多い、ハンバーガーメニューアイコンをCSSのみで実装する方法をまとめていきます。以下例です。

まずはHTML部分を実装します。大枠をdiv要素で囲んで中にspanで三本線用の要素を実装しておきます。


<div class="p-hamburger">
  <span class="p-hamburger-line"></span>
  <span class="p-hamburger-line"></span>
  <span class="p-hamburger-line"></span>
</div>

CSS側ではdisplay: flexflex-direction: columnを使用して縦3列に並べておきます。あとは線の太さや長さ、カラーを調整、余白用のmarginを付与すれば完成です。


.p-hamburger {
  display: flex;
  flex-direction: column;
  cursor: pointer;
}

.p-hamburger-line {
  width: 30px;
  height: 2px;
  background-color: #E87C7C;
  margin: 3px 0;
}

ボタンクリック時にばつ印にアニメーションさせる

ボタンクリック時にハンバーガーメニューからばつ印にアニメーションさせるにはまずHTMLを以下のように書き換えます。input要素とlabelに書き換えて両者がリンクするようにidforをつけておきます。これでlabelをクリックすることでinput要素にcheckedがつきます。


<div>
  <input type="checkbox" id="hamburger-checkbox">
  <label class="p-hamburger" for="hamburger-checkbox">
    <span class="p-hamburger-line"></span>
    <span class="p-hamburger-line"></span>
    <span class="p-hamburger-line"></span>
  </label>
</div>

cssはp-hamburger-linetransitionを追加します。#hamburger-checkbox:checked+.p-hamburgerでinputがチェックされている(checkedついている)ときの各段をnth-childでそれぞれ指定し傾きを適応させます。


.p-hamburger {
  display: flex;
  flex-direction: column;
  cursor: pointer;
}

.p-hamburger-line {
  width: 30px;
  height: 2px;
  background-color: #E87C7C;
  margin: 3px 0;
  transition: 0.3s;
}

/* 不要なinputは非表示にする */
#hamburger-checkbox {
  display: none;
}

/* 上段を傾ける */
#hamburger-checkbox:checked+.p-hamburger .p-hamburger-line:nth-child(1) {
  transform: rotate(-45deg) translate(-5px, 6px);
}

/* 中段は非表示にする */
#hamburger-checkbox:checked+.p-hamburger .p-hamburger-line:nth-child(2) {
  opacity: 0;
}

/* 下段を傾ける */
#hamburger-checkbox:checked+.p-hamburger .p-hamburger-line:nth-child(3) {
  transform: rotate(45deg) translate(-5px, -6px);
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index