SNSリンク付きドロワーメニューの作り方【HTML/CSS/JavaScript・サンプルコード付き】

ドロワーメニュー

SNSリンク付きドロワーメニューを作る方法

SNSリンク付きドロワーメニューを作る方法を紹介します。このサンプルでは、通常のメニュー項目に加えて、X(旧Twitter)、Instagram、YouTube、FacebookなどのSNSリンクをドロワーメニュー内へまとめて配置するレイアウトをHTML・CSS・JavaScriptで実装します。「メニューを開く」ボタンをクリックすると画面左側からドロワーメニューが表示され、サイト内メニューとSNSリンクをまとめて確認できます。

SNSへの導線を分かりやすく配置することで、サイト訪問者が公式アカウントへアクセスしやすくなります。企業サイト、ブログ、ポートフォリオサイト、ECサイトなど、SNSを活用しているWebサイトで利用しやすい構成です。

SNSアイコン、SNS名、リンク先URL、メニュー項目、配色、ドロワーメニューの横幅、余白、角丸、影、表示アニメーションの速度などを自由に変更できます。画面幅640px以下では画面幅いっぱいに表示されるため、スマートフォン・タブレット・PCでも快適に利用できます。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

「メニューを開く」をクリックすると、通常のメニュー項目とLINE、Facebook、X、Instagramへのリンクをまとめたドロワーメニューが表示されます。「閉じる」ボタンまたは背景部分をクリックすると閉じます。

コードをコピーして使おう!

<!DOCTYPE html>
<html lang="ja">

<head>

  <!-- 文字コードをUTF-8に設定 -->
  <meta charset="UTF-8">

  <!-- スマートフォンで適切な表示サイズにする -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ブラウザのタブに表示するページタイトル -->
  <title>SNSリンク付きドロワーメニュー</title>

  <!-- CSSファイルを読み込む -->
  <link rel="stylesheet" href="style.css">

</head>

<body>

  <!-- ページの案内エリア -->
  <main class="sns-links-drawer-menu_wrap">

    <!-- 案内エリアのタイトル -->
    <div class="sns-links-drawer-menu_title">
      SNSリンク付きドロワーメニュー
    </div>

    <!-- ドロワーメニューの説明文 -->
    <p class="sns-links-drawer-menu_text">
      通常のメニュー項目とSNSリンクをまとめて表示できます。
    </p>

    <!-- ドロワーメニューを開くボタン -->
    <button
      class="sns-links-drawer-menu_open"
      type="button"
      data-sns-links-drawer-open>
      メニューを開く
    </button>

  </main>

  <!-- ドロワーメニュー表示時の背景 -->
  <div
    class="sns-links-drawer-menu_overlay"
    data-sns-links-drawer-overlay
    aria-hidden="true">

    <!-- ドロワーメニュー本体 -->
    <aside
      class="sns-links-drawer-menu_drawer"
      role="dialog"
      aria-modal="true"
      aria-labelledby="sns-links-drawer-menu-title">

      <!-- ドロワーメニューのタイトル -->
      <div
        class="sns-links-drawer-menu_drawer-title"
        id="sns-links-drawer-menu-title">
        メニュー
      </div>

      <!-- 通常のメニューリンク一覧 -->
      <nav
        class="sns-links-drawer-menu_nav"
        aria-label="メインメニュー">

        <!--
          href属性の#をホームページのURLへ変更する
          「ホーム」を表示したいメニュー名へ変更できる
        -->
        <a href="#">ホーム</a>

        <!--
          href属性の#をサービスページのURLへ変更する
          「サービス」を表示したいメニュー名へ変更できる
        -->
        <a href="#">サービス</a>

        <!--
          href属性の#をお知らせページのURLへ変更する
          「お知らせ」を表示したいメニュー名へ変更できる
        -->
        <a href="#">お知らせ</a>

        <!--
          href属性の#をお問い合わせページのURLへ変更する
          「お問い合わせ」を表示したいメニュー名へ変更できる
        -->
        <a href="#">お問い合わせ</a>

      </nav>

      <!-- SNSリンク一覧 -->
      <div class="sns-links-drawer-menu_sns">

        <!-- SNSリンク一覧の見出し -->
        <div class="sns-links-drawer-menu_sns-title">
          公式SNS
        </div>

        <!--
          href属性の#をLINEのURLへ変更する
          src属性はLINEアイコンの画像URL
          alt属性には画像の内容が分かる「LINE」を指定する
          「LINE」を表示したいリンク名へ変更できる
        -->
        <a href="#" aria-label="LINEを開く">
          <img
            src="http://maruhinoto.com/wp-content/uploads/2026/07/Line.png"
            alt="LINE">
          <span>LINE</span>
        </a>

        <!--
          href属性の#をFacebookのURLへ変更する
          src属性はFacebookアイコンの画像URL
          alt属性には画像の内容が分かる「Facebook」を指定する
          「Facebook」を表示したいリンク名へ変更できる
        -->
        <a href="#" aria-label="Facebookを開く">
          <img
            src="http://maruhinoto.com/wp-content/uploads/2026/07/facebook.png"
            alt="Facebook">
          <span>Facebook</span>
        </a>

        <!--
          href属性の#をXのURLへ変更する
          src属性はXアイコンの画像URL
          alt属性には画像の内容が分かる「X」を指定する
          「X」を表示したいリンク名へ変更できる
        -->
        <a href="#" aria-label="Xを開く">
          <img
            src="http://maruhinoto.com/wp-content/uploads/2026/07/X.png"
            alt="X">
          <span>X</span>
        </a>

        <!--
          href属性の#をInstagramのURLへ変更する
          src属性はInstagramアイコンの画像URL
          alt属性には画像の内容が分かる「Instagram」を指定する
          「Instagram」を表示したいリンク名へ変更できる
        -->
        <a href="#" aria-label="Instagramを開く">
          <img
            src="http://maruhinoto.com/wp-content/uploads/2026/07/instagram.png"
            alt="Instagram">
          <span>Instagram</span>
        </a>

      </div>

      <!-- ドロワーメニューを閉じるボタン -->
      <button
        class="sns-links-drawer-menu_close"
        type="button"
        data-sns-links-drawer-close>
        閉じる
      </button>

    </aside>

  </div>

  <!-- JavaScriptファイルを読み込む -->
  <script src="script.js"></script>

</body>

</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでドロワーメニュー、通常のメニューリンク、SNSリンク、開閉ボタンを配置し、CSSで画面左側から表示されるドロワーメニューのデザインを設定します。JavaScriptではis-activeクラスを付け外しして、ドロワーメニューの表示と非表示を切り替えます。

sample/
├── index.html
├── style.css
└── script.js

各ファイルの役割
index.htmlはSNSリンク付きドロワーメニューの構造を作るファイルです。「メニューを開く」ボタン、通常のメニューリンク、LINE・Facebook・X・InstagramのSNSリンク、「閉じる」ボタンを配置しています。SNSリンクではimg要素を使って各SNSのアイコン画像を表示しています。

style.cssはドロワーメニューのデザインを設定するファイルです。案内エリア、開くボタン、背景オーバーレイ、ドロワーメニュー、通常のメニューリンク、SNSリンク、SNSアイコン、閉じるボタンの見た目を設定しています。ドロワーメニューを開いたときは、左側からスライドして表示されるアニメーションを設定しています。

script.jsはドロワーメニューを開閉するファイルです。「メニューを開く」をクリックすると背景オーバーレイへis-activeクラスを追加してドロワーメニューを表示します。「閉じる」ボタンまたはドロワーメニュー外側の背景をクリックするとis-activeクラスを削除して閉じます。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。index.htmlからstyle.cssとscript.jsを読み込むため、追加のJavaScriptライブラリは必要ありません。

SNSリンクで使用するアイコン画像は、index.html内の各img要素のsrc属性で指定しています。サンプルの画像URLをそのまま使用せず、実際に設置するサイトで使用するSNSアイコン画像のURLへ変更してください。

「メニューを開く」をクリックすると、画面左側からドロワーメニューが表示されます。ドロワー内には通常のメニューリンクとSNSリンクが表示され、「閉じる」ボタンまたはドロワー外側の半透明の背景をクリックすると閉じます。

カスタマイズできる内容
index.htmlでは通常のメニューリンクの文字、リンク数、リンク先を変更できます。各href="#"を実際に移動するページのURLへ変更してください。

SNSリンクも同様に、各href="#"をLINE、Facebook、X、InstagramなどのSNSページのURLへ変更できます。SNSの種類を変更する場合は、img要素のsrc属性、alt属性、リンク内のSNS名も合わせて変更してください。

style.cssではドロワーメニューの横幅、背景色、余白、通常メニューの間隔、SNSリンクの大きさ、SNSアイコンのサイズ、ボタンの色、背景オーバーレイの濃さ、スライド速度などを変更できます。

数値調整
style.css
max-width:700px;
案内エリアの最大横幅です。値を大きくすると案内エリアが横に広がります。

padding:32px;
案内エリアの内側余白です。値を大きくすると内容と外枠の間隔が広がります。

border-radius:18px;
案内エリアの角丸です。値を大きくすると丸みが強くなります。

font-size:24px;
案内エリアのタイトルとドロワーメニュー内のタイトルに使用している文字サイズです。値を大きくすると文字が大きくなります。

padding:12px 24px;
「メニューを開く」ボタンの内側余白です。12pxが上下、24pxが左右の余白です。

background:rgba(0,0,0,.45);
ドロワーメニューを表示したときの背景オーバーレイの色と透明度です。最後の.45を大きくすると背景が濃くなり、小さくすると薄くなります。

width:340px;
ドロワーメニューの横幅です。値を大きくするとドロワーメニューが横に広がり、小さくすると細くなります。

max-width:90%;
ドロワーメニューが画面幅を大きく超えないようにする最大横幅です。値を変更すると、画面に対してドロワーメニューが占める割合を調整できます。

padding:24px;
ドロワーメニュー本体の内側余白です。値を大きくするとメニュー内容と画面端の間隔が広がります。

animation:sns-links-drawer-menu-slide .35s ease forwards;
ドロワーメニューが左側から表示されるアニメーションの時間です。.35sを大きくするとゆっくり表示され、小さくすると速く表示されます。

gap:8px;
通常のメニューリンク同士の間隔です。値を大きくするとリンク同士の間隔が広がります。

margin:28px 0 0;
通常のメニューリンクとSNSリンク一覧との間隔です。28pxを大きくするとSNSリンク一覧が下へ離れます。

gap:12px;
SNSリンク同士の間隔です。値を大きくすると各SNSリンクの間隔が広がります。

min-height:52px;
各SNSリンクの最小高さです。値を大きくするとSNSリンクが縦方向に大きくなります。

width:32px;
height:32px;
SNSアイコン画像の横幅と高さです。両方の値を同じように変更すると、アイコンの表示サイズを調整できます。

margin:24px 0 0;
SNSリンク一覧と「閉じる」ボタンとの間隔です。24pxを大きくすると間隔が広がります。

レスポンシブ対応
通常時のドロワーメニューはwidth:340px;max-width:90%;で表示します。画面幅640px以下ではwidth:100%;max-width:100%;へ切り替わり、ドロワーメニューが画面幅いっぱいに表示されます。

画面幅640px以下ではページ全体の余白をpadding:24px 12px;、案内エリアをpadding:24px 18px;、ドロワーメニューをpadding:24px 20px;へ変更します。また、「メニューを開く」ボタンをwidth:100%;にすることで、スマートフォンでも押しやすい表示にしています。


こちらもおすすめ


コメント