複数開ける縦長アコーディオンを左方向に開く方法
複数開ける縦長アコーディオンを左方向に開く方法を紹介します。このサンプルでは、HTML・CSS・JavaScriptを使用し、縦長のボタンをクリックすると、その左側へ対応するコンテンツが表示されるアコーディオンを作成します。それぞれの項目を独立して開閉できるため、1つだけでなく複数のアコーディオンを同時に開いた状態で確認できます。
サービス案内、料金プラン、管理画面、サイドバー風の情報表示など、縦方向に見出しを配置しながら詳細を左方向へ展開したい場面に利用できます。「サービス」「料金」「問合せ」の各ボタンをクリックすると左側へ内容が表示され、別の項目を開いても先に開いた内容は閉じません。同じボタンをもう一度クリックすると、その項目だけを閉じられます。
HTMLでは縦長ボタンの文字や左側へ表示する見出し、説明文を変更できます。CSSでは全体の横幅、縦長ボタンの幅と高さ、コンテンツの横幅、余白、背景色、枠線、角丸などを調整できます。JavaScriptではクリックした項目ごとに開閉状態を切り替えます。複数項目を開いて表示幅を超えた場合は、アコーディオン部分を横方向へスクロールして内容を確認できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
縦長のボタンをクリックすると左側へ内容が開きます。複数の項目を同時に開くこともできます。
縦長のボタンをクリックすると、その項目の内容が左方向へ開きます。複数の項目を開いて表示幅を超えた場合は、アコーディオン部分を横方向へスクロールして確認できます。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コード -->
<meta charset="UTF-8">
<!-- スマートフォン対応 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ページタイトル -->
<title>複数開ける縦長アコーディオンを左方向に開く</title>
<!-- CSSファイル -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- アコーディオン全体 -->
<div class="vertical-accordion-open-left_wrap">
<!-- タイトル -->
<div class="vertical-accordion-open-left_title">
複数開ける縦長アコーディオンを左方向に開く
</div>
<!-- 説明文 -->
<p class="vertical-accordion-open-left_text">
縦長のボタンをクリックすると左側へ内容が開きます。複数の項目を同時に開くこともできます。
</p>
<!-- 横スクロール表示エリア -->
<div class="vertical-accordion-open-left_area">
<!-- アコーディオン項目全体 -->
<div class="vertical-accordion-open-left_buttons">
<!-- サービス -->
<div class="vertical-accordion-open-left_item">
<button class="vertical-accordion-open-left_button" type="button">
サービス
</button>
<div class="vertical-accordion-open-left_content">
<h3>サービス</h3>
<p>
縦長の見出しから、左側へ詳細コンテンツを展開できます。
</p>
</div>
</div>
<!-- 料金 -->
<div class="vertical-accordion-open-left_item">
<button class="vertical-accordion-open-left_button" type="button">
料金
</button>
<div class="vertical-accordion-open-left_content">
<h3>料金</h3>
<p>
料金やプランの補足情報を横方向に表示できます。
</p>
</div>
</div>
<!-- 問合せ -->
<div class="vertical-accordion-open-left_item">
<button class="vertical-accordion-open-left_button" type="button">
問合せ
</button>
<div class="vertical-accordion-open-left_content">
<h3>お問い合わせ</h3>
<p>
管理画面やサイドバー風のレイアウトにも利用できます。
</p>
</div>
</div>
</div>
</div>
</div>
<!-- JavaScriptファイル -->
<script src="script.js"></script>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでは縦長のボタンと左側へ表示する内容を作成し、CSSでは縦書きのボタン、横並びの配置、左方向へ開くレイアウト、横スクロールなどを設定します。JavaScriptでは、クリックした項目へ開閉用のクラスを付け外ししてアコーディオンを開閉します。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlはアコーディオン全体を構成するファイルです。タイトル、説明文、「サービス」「料金」「問合せ」のボタン文字、開いたときに表示する見出しや本文を変更できます。項目を追加・削除する場合も、アコーディオン項目のHTMLを編集します。
style.cssはアコーディオンの見た目と配置を設定するファイルです。全体の横幅や余白、背景色、枠線、角丸、縦長ボタンの幅と高さ、開いた内容の横幅などを変更できます。flex-direction:row-reverse;によって、開いた内容がボタンの左側へ配置されます。また、表示領域を超えた場合はoverflow-x:auto;によって横スクロールできます。
script.jsはアコーディオンの開閉を行うファイルです。各ボタンをクリックすると、その項目へis-openクラスを付け外しします。それぞれの項目を個別に切り替える仕組みのため、複数のアコーディオンを同時に開いた状態にできます。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを同じ階層で配置します。3つのファイルを保存したあと、sample/index.htmlをブラウザで開いてください。縦長の「サービス」「料金」「問合せ」ボタンをクリックすると、クリックした項目の内容がボタンの左側へ表示されます。もう一度同じボタンをクリックすると、その項目を閉じられます。
各項目は独立して開閉できるため、一つの項目を開いたまま別の項目をクリックすると複数の内容を同時に表示できます。複数の項目を開いて表示領域の横幅を超えた場合は、アコーディオン部分を横方向へスクロールして内容を確認できます。
カスタマイズできる内容
index.htmlではタイトル、説明文、各ボタンの文字、開いたときに表示する見出しと本文を変更できます。「サービス」「料金」「問合せ」を用途に合わせた項目名へ変更したり、各項目の説明内容を書き換えたりできます。
style.cssでは全体の最大横幅、内側余白、背景色、枠線、角丸、項目同士の間隔、縦長ボタンの横幅と高さ、内容部分の横幅や余白を変更できます。ボタンの文字色や開閉記号の色、内容部分の文字色なども用途に合わせて調整できます。
数値調整
style.css
max-width:700px;
アコーディオン全体の最大横幅です。値を大きくすると表示できる範囲が横に広がり、小さくするとコンパクトになります。
margin:40px auto;
アコーディオン全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。
padding:32px;
アコーディオン全体の内側余白です。値を大きくすると内容と外枠の間隔が広がり、小さくすると狭くなります。
border-radius:18px;
アコーディオン全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
タイトルの文字サイズです。値を大きくするとタイトルが大きくなり、小さくすると控えめになります。
margin:0 0 24px;
説明文の下側余白です。24pxを大きくするとアコーディオンとの間隔が広がり、小さくすると狭くなります。
min-height:260px;
横スクロール表示エリアと縦長ボタンの最小高さです。値を大きくすると縦方向に長くなり、小さくすると低くなります。
gap:12px;
各アコーディオン項目の間隔です。値を大きくすると項目同士が離れ、小さくすると近くなります。
width:64px;
縦長ボタンの横幅です。値を大きくするとボタンが太くなり、小さくすると細くなります。
padding:16px 10px;
縦長ボタンの内側余白です。上下の16pxと左右の10pxを変更すると、ボタン内部の文字や記号と端との間隔が変わります。
margin-top:10px;
ボタンの文字と「+」「-」記号の間隔です。値を大きくすると間隔が広がり、小さくすると近くなります。
width:260px;
開いた内容部分の横幅です。値を大きくすると内容が左方向へ広く展開され、小さくするとコンパクトになります。
padding:18px;
開いた内容部分の内側余白です。値を大きくすると文章と枠線の間隔が広がり、小さくすると狭くなります。
font-size:18px;
開いた内容部分にある見出しの文字サイズです。値を大きくすると見出しが大きくなり、小さくすると小さくなります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%;とmax-width:700px;によって、アコーディオン全体が画面幅に合わせて縮小されます。アコーディオン部分にはoverflow-x:auto;を設定しているため、複数の項目を開いて横幅を超えた場合は横方向へスクロールできます。さらに640px以下ではpadding:24px 18px;へ変更して全体の内側余白を小さくしているため、スマートフォン・タブレット・PCで利用できます。
コメント