HTML/CSSだけで複数ドロワーメニューを切り替えて表示する方法
HTML/CSSだけで複数ドロワーメニューを切り替えて表示する方法を紹介します。このサンプルでは「メニューA」と「メニューB」のボタンを用意し、選択したボタンに対応する内容を画面左側から表示します。JavaScriptを使わず、HTMLのラジオボタンとCSSのセレクタだけで開閉状態を切り替えます。
画面上へ表示されるドロワーメニューは常に1つだけです。メニューAを選ぶとホーム・サービス・会社概要が表示され、メニューBを選ぶとブログ・料金・お問い合わせへ内容が切り替わります。別のボタンを選択した場合も、複数のドロワーメニューが重なって表示されることはありません。
JavaScriptを使用できないページや、簡潔な構成で複数のナビゲーションを切り替えたい場合に利用できます。メニュー項目、リンク先、横幅、背景色、余白、角丸、影、スライド速度などはHTMLとCSS内で変更できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
ボタンをクリックすると、1つのドロワーメニュー内で表示内容を切り替えます。
「メニューA」「メニューB」をクリックすると、同じドロワーメニューが左側から表示され、内容だけが切り替わります。閉じるボタンまたは背景部分をクリックすると、ページ移動や再読み込みをせずに閉じます。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コード -->
<meta charset="UTF-8">
<!-- スマートフォン表示対応 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ページタイトル -->
<title>HTML/CSSだけで複数ドロワーメニューを切り替えて表示</title>
<!-- CSSファイルを読み込み -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- ドロワーメニューを開く操作エリア -->
<main class="html-css-multi-drawer_wrap">
<!-- 操作エリアのタイトル -->
<div class="html-css-multi-drawer_title">
HTML/CSSだけで切り替える複数ドロワーメニュー
</div>
<!-- 操作エリアの説明文 -->
<p class="html-css-multi-drawer_text">
ボタンをクリックすると、1つのドロワーメニュー内で表示内容を切り替えます。
</p>
<!-- メニューを開くボタン -->
<div class="html-css-multi-drawer_buttons">
<!-- メニューAを開く -->
<label
class="html-css-multi-drawer_button"
for="html-css-multi-drawer-a">
メニューA
</label>
<!-- メニューBを開く -->
<label
class="html-css-multi-drawer_button"
for="html-css-multi-drawer-b">
メニューB
</label>
</div>
</main>
<!-- ドロワーメニューを閉じた状態 -->
<input
class="html-css-multi-drawer_radio"
type="radio"
name="html-css-multi-drawer"
id="html-css-multi-drawer-close"
checked>
<!-- メニューAを表示する状態 -->
<input
class="html-css-multi-drawer_radio"
type="radio"
name="html-css-multi-drawer"
id="html-css-multi-drawer-a">
<!-- メニューBを表示する状態 -->
<input
class="html-css-multi-drawer_radio"
type="radio"
name="html-css-multi-drawer"
id="html-css-multi-drawer-b">
<!-- ドロワーメニュー表示中の背景 -->
<label
class="html-css-multi-drawer_overlay"
for="html-css-multi-drawer-close"
aria-label="ドロワーメニューを閉じる">
</label>
<!-- 1つのドロワーメニュー本体 -->
<aside class="html-css-multi-drawer_drawer">
<!-- メニューAの内容 -->
<div class="html-css-multi-drawer_content html-css-multi-drawer_content-a">
<!-- メニューA上部 -->
<div class="html-css-multi-drawer_header">
<!-- メニューAのタイトル -->
<div class="html-css-multi-drawer_heading">
メニューA
</div>
<!-- メニューAを閉じるボタン -->
<label
class="html-css-multi-drawer_close"
for="html-css-multi-drawer-close"
aria-label="メニューAを閉じる">
</label>
</div>
<!-- メニューAのナビゲーション -->
<nav class="html-css-multi-drawer_nav" aria-label="メニューA">
<a class="html-css-multi-drawer_link" href="#home">
ホーム
</a>
<a class="html-css-multi-drawer_link" href="#service">
サービス
</a>
<a class="html-css-multi-drawer_link" href="#company">
会社概要
</a>
<a class="html-css-multi-drawer_link" href="#contact">
お問い合わせ
</a>
</nav>
</div>
<!-- メニューBの内容 -->
<div class="html-css-multi-drawer_content html-css-multi-drawer_content-b">
<!-- メニューB上部 -->
<div class="html-css-multi-drawer_header">
<!-- メニューBのタイトル -->
<div class="html-css-multi-drawer_heading">
メニューB
</div>
<!-- メニューBを閉じるボタン -->
<label
class="html-css-multi-drawer_close"
for="html-css-multi-drawer-close"
aria-label="メニューBを閉じる">
</label>
</div>
<!-- メニューBのナビゲーション -->
<nav class="html-css-multi-drawer_nav" aria-label="メニューB">
<a class="html-css-multi-drawer_link" href="#blog">
ブログ
</a>
<a class="html-css-multi-drawer_link" href="#price">
料金
</a>
<a class="html-css-multi-drawer_link" href="#case">
導入事例
</a>
<a class="html-css-multi-drawer_link" href="#support">
サポート
</a>
</nav>
</div>
</aside>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
ファイル構成と設置方法
このサンプルは、HTMLとCSSの2ファイルだけで動作する複数ドロワーメニューです。JavaScriptを使用せず、radioボタンとlabelを利用して、1つのドロワーメニュー内の表示内容を切り替えています。HTMLでは画面構成とメニュー内容を定義し、CSSではレイアウト、開閉アニメーション、表示切り替えを行っています。
sample/
├── index.html
└── style.css
各ファイルの役割
index.html
ページ全体の構成、開閉ボタン、radioボタン、ドロワーメニュー、メニューA・メニューBの内容を定義しています。タイトルや説明文、ボタン名、メニュー項目などを自由に変更できます。
style.css
ドロワーメニューのデザイン、ボタンの装飾、背景、影、開閉アニメーション、radioボタンによる表示切り替え、レスポンシブ表示を設定しています。
設置方法・使い方
sampleフォルダ内のファイルをそのまま配置します。
sample/index.htmlをブラウザで開くと利用できます。メニューAまたはメニューBをクリックすると、同じドロワーメニュー内で内容だけを切り替えて表示します。閉じるボタンまたは背景部分をクリックするとドロワーメニューを閉じます。
カスタマイズできる内容
index.htmlではページタイトル、説明文、ボタン名、ドロワーメニューのタイトル、各メニュー項目を変更できます。
style.cssではボタンの色、文字色、背景色、ドロワーメニューの横幅、余白、角丸、影、アニメーション速度などを変更できます。radioボタンの切り替え対象を変更すれば表示する内容を追加・変更することもできます。
数値調整
style.css
width:320px;
ドロワーメニューの横幅です。値を変更するとメニューの幅が変わります。
max-width:85%;
小さい画面での最大幅です。値を変更するとスマートフォン表示時の横幅が変わります。
transition:transform .35s ease;
0.35秒でドロワーメニューが開閉します。値を大きくするとゆっくり、小さくすると速くなります。
transition:opacity .3s;
背景を0.3秒でフェード表示します。値を変更すると背景の表示速度が変わります。
レスポンシブ対応
style.cssでレスポンシブ対応しています。max-width:85%により画面幅に合わせてドロワーメニューが縮小され、@media(max-width:640px)では余白を調整しています。スマートフォン・タブレット・PCで利用できます。
コメント