css

【CSS】ハンバーガーアイコン左メニュー表示

ハンバーガーアイコンをクリックするとメニューが表示されるようなギミックのメモ

以下のような感じになります。

実装前の参考

以下を参考に作成しています。

ハンバーガーアイコン

ハンバーガーアイコンについては以下を参照して下さい。

transform

transform を使用しています。transform については以下を参考にして下さい。

overflow

overflow を使用しています。overflow については以下を参考にして下さい。

実装

HTML

    <div class='out'>
        <div id="navi-overlay">
            <nav></nav>
            <div class="hamburger">
                <span> </span>
                <span> </span>
                <span> </span>
            </div>
        </div>
    </div>

CSS

.out {
  width: 500px;
  height: 500px;
  overflow: hidden;
}

/* navigation overlay */
#navi-overlay {
  display: flex;
  height: 100%;
  width: calc(100% + 150px);
  transition: all 0.5s 0s ease;
  transform: translateX(-150px);
}

/* navigation overlay open */
#navi-overlay.open {
  background-color: rgba(0, 0, 0, 0.4);
  transform: translateX(0);
}

/* nav menu */
#navi-overlay nav {
  background-color: #f53838;
  height: 100%;
  width: 150px;
}

/* hamburger icon */
#navi-overlay .hamburger {
  position: relative;
  width: 50px;
  height: 34px;
  margin-left: 10px;
  margin-top: 10px;
}

#navi-overlay .hamburger span {
  position: absolute;
  width: 100%;
  height: 4px;
  background-color: black;
  transition: all 0.3s 0s linear;
}

#navi-overlay .hamburger span:nth-child(1) {
  top: 0;
}

#navi-overlay .hamburger span:nth-child(2) {
  top: 15px;
}

#navi-overlay .hamburger span:nth-child(3) {
  bottom: 0;
}

/* hamburger icon click */
#navi-overlay .hamburger.active span:nth-child(1) {
  transform: translateY(15px) rotate(-45deg);
}

#navi-overlay .hamburger.active span:nth-child(2) {
  opacity: 0;
}

#navi-overlay .hamburger.active span:nth-child(3) {
  transform: translateY(-15px) rotate(45deg);
}

JAVASCRIPT

const elements = document.getElementsByClassName('hamburger');
const navigation = document.getElementById('navi-overlay');
for (let element of elements) {
  element.addEventListener('click', function (e) {
    element.classList.toggle('active');
    navigation.classList.toggle('open');
  });
}

最後に

特にありません。

© DeNnie.Lab All Rights Reserved.