当サイトはアフィリエイト広告を利用しています
ハンバーガーメニューを作ろう!

【jQuery】ハンバーガーメニューの作り方

jQueryを使ってみよう!

今現在(2024/02)、賛否両論ありますが、ハンバーガーメニューを作っていきます。

javascriptで書けたら1番いいんですけど……只今勉強中で、jQueryを使っていきます。

使うのはいいけど……どうすんの?
早速見ていこう!
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script type="text/javascript" src="js/script.js"></script>  

これを、htmlの<body>内の1番最後に書いておいて下さい。

脱jQueryの動きが加速していると言われていますが、ちょくちょく更新されていて、今現在(2024/02)はver3.7.1になります。

ハンバーガーメニューの作り方(デモ画面)

まず、デモ画面はこちら!画面サイズが767px以下の時に、ハンバーガーメニューになるようなレスポンシブサイトにします。
ヘッダー部分の、サイトロゴとグローバルナビゲーションを除いた部分を、ハンバーガーメニューで作っていきます。
サイトロゴの配置は、左端のパターンと真ん中のパターンがありますが、個人的に真ん中が好きなので、その様にやっていきます。

ハンバーガーメニューの作り方(html)

  <!-- ヘッダー -->
<header>
  <div id="headerContent">
    <div id="sp_headerContent">
      <a id="headerMenuBtn" href="#"><img src="images/menu_open.png" alt="メニューを開く"></a>
    </div><!--sp_headerContent-->
    <div id="headerMenu">
      <h2>メニュー<a id="headerMenuClose" href="#"><img class="close" src="images/btn_close_02.png" alt="閉じる"></a></h2>
        <!--ナビバー左側-->
      <div class="left">
        <ul class="utility">
          <li><a href="">ホーム</a></li>
          <li><a href="">お問い合わせ一覧</a></li>
          <li><a href="">アクセス</a></li>
        </ul>
      </div><!--left-->
          
        <!--ナビバー右側-->
      <div class="right">
        <ul class="utility">
          <li><a href="">サイトマップ</a></li>
          <li><a href="">ENGLISH</a></li>
          <li><a href="">採用情報</a></li>
        </ul>
      </div><!--right-->
    </div><!--headerMenu--> 
  </div><!--headerContent--> 
</header>

ハンバーガーメニューの作り方(css)

@charset "UTF-8";
* {
  padding: 0;
  margin: 0;
}

/* 共通 */
#header {
  width: 100%;
  padding-top: 6px;
}
#headerContent {
  margin: 0 auto;
}
#headerMenu {
  width: 100%;
}
/* 画面サイズ(1025px以上) */
@media screen and (min-width:1025px) {
#headerContent {
  width: 980px;
  height: 110px;
}
}
/* 画面サイズ(768~1024px) */
@media screen and (min-width:768px) and (max-width:1024px) {
#headerContent {
  width: 100%;
  height: 110px;
}
.left {
  margin-left: 10px;
}
.right {
  margin-right: 10px;
}
}
/* 画面サイズ(768px以上) */
@media screen and (min-width:768px) {
#headerMenu h2 {
  display: none;
}
#headerMenuBtn {
  display: none;
}
#headerMenu {
  display: flex;
  justify-content: space-between;
}
/* ナビバー左側 */
.left {
  margin-top: 17px; 
}
/* ナビバー右側 */
.right {
  margin-top: 17px;
}
/* ナビバー */
.utility {
  display: flex;
  list-style: none;
}  
.utility li {
  font-size: 13px;
  line-height: 1;
}
.utility li:nth-child(1) {
  padding-right: 12px;
}
.utility li:nth-child(2) {
  padding: 0 12px; 
  border-left: 1px solid #e1e1e1;
}
.utility li:nth-child(3) {
  padding-left: 12px; 
  border-left: 1px solid #e1e1e1;
}
.utility li a {
  color: #434343;
}
.utility li a:hover {
  text-decoration: none;
}
}
/* 画面サイズ(767px以下)(ハンバーガーメニュー) */
@media screen and (max-width:767px) {
#headerContent {
  width: 100%;
}
#sp_headerContent {
  position: relative;
  width: 100%; 
  height: 45px; 
}
#headerMenuBtn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  right: 10px;
  width: 30px;
}
#headerMenuBtn img {
  width: 100%;
}
#headerMenu {
  position: fixed;
  top: 0;
  right: -100%;
  width: 100%;
  height: 100%;
  transition: 0.3s;
}
.open #headerMenu {
  right: 0;
}
#headerMenu h2 {
  position: relative;
  background-color: #f1f4ff;
  font: inherit;
  font-size: 18px;
  padding: 10px;
} 
/* ハンバーガーメニューを閉じるボタン */
#headerMenu h2 .close {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  right: 10px;
  width: 22px;
}
.utility {
  list-style: none;
}
.utility li a {
  display: block;
  color: #245dc1;
  padding: 10px 0px 10px 10px;
  font-size: 15px;
  border-bottom: 1px solid #ccc;
}
.utility li a:hover {
  text-decoration: none;
}
}

cssを長々と書いてますが、ポイントは105行目~115行目のところだけ!

最初、全部右側に隠れていて、クリックするとopenとういうクラスが付き、右から飛び出してくるという感じですね。

最初のアスタリスクのところは、リセットの為に書いています。

アスタリスクは、全部のhtmlタグを1回で指定できます。

また、block、inline、inline-blockなどの説明を全くしていませんでしたが、次のサイトがすごく分かりやすいです。

【CSS】displayの使い方を総まとめ!inlineやblockの違いは? | サルワカ

https://saruwakakun.com/html-css/basic/display

ハンバーガーメニューの作り方(jQuery)

/* ハンバーガーメニュー */
$(function() {
  $('#headerMenuBtn').on('click', function() {
    $('body').addClass('open');
    return false;  
  });
  $('#headerMenuClose').on('click', function() {
    $('body').removeClass('open');
    return false;  
  });
});

return false;がないと、クリックした時にリンク先に移動してしまいます。

それを防ぐために、書いています。

javascriptとは、意味が違うので注意です。

さいごに

生粋のjavascriptは、只今勉強中です。

今日は、ありがとうございました。では、また!

スポンサーリンク

Javascript&jQueryの最新記事4件