複数開ける縦長アコーディオンを右方向に開く方法
複数開ける縦長アコーディオンを右方向に開く方法を紹介します。このサンプルでは、HTML・CSS・JavaScriptを使用し、縦長のボタンをクリックすると、その右側へ対応するコンテンツが表示されるアコーディオンを作成します。それぞれの項目を個別に開閉でき、別の項目を開いても先に開いた内容は閉じないため、複数のコンテンツを同時に開いた状態で確認できます。
サービス案内、料金プラン、管理画面、サイドバー風の情報表示など、縦方向に見出しを配置しながら詳細を横方向へ展開したい場面に利用できます。「サービス」「料金」「問合せ」の各ボタンをクリックすると右側へ内容が表示され、同じボタンをもう一度クリックするとその項目だけを閉じられます。複数の項目を開いて横幅が広くなった場合は、アコーディオン部分だけを横方向へスクロールして内容を確認できます。
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-right_wrap">
<!-- タイトル -->
<div class="vertical-accordion-open-right_title">
複数開ける縦長アコーディオンを右方向に開く
</div>
<!-- 説明文 -->
<p class="vertical-accordion-open-right_text">
縦長のボタンをクリックすると右側へ内容が開きます。複数の項目を同時に開くこともできます。
</p>
<!-- 横スクロール表示エリア -->
<div class="vertical-accordion-open-right_area">
<!-- アコーディオン項目全体 -->
<div class="vertical-accordion-open-right_buttons">
<!-- サービス -->
<div class="vertical-accordion-open-right_item">
<button class="vertical-accordion-open-right_button" type="button">
サービス
</button>
<div class="vertical-accordion-open-right_content">
<h3>サービス</h3>
<p>
縦長の見出しから、右側へ詳細コンテンツを展開できます。
</p>
</div>
</div>
<!-- 料金 -->
<div class="vertical-accordion-open-right_item">
<button class="vertical-accordion-open-right_button" type="button">
料金
</button>
<div class="vertical-accordion-open-right_content">
<h3>料金</h3>
<p>
料金やプランの補足情報を横方向に表示できます。
</p>
</div>
</div>
<!-- 問合せ -->
<div class="vertical-accordion-open-right_item">
<button class="vertical-accordion-open-right_button" type="button">
問合せ
</button>
<div class="vertical-accordion-open-right_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は縦長アコーディオン全体を構成するファイルです。タイトル、説明文、「サービス」「料金」「問合せ」の縦長ボタン、右側へ表示する見出しと本文を変更できます。各項目はボタンとコンテンツを1つのまとまりとして配置しているため、同じ構成を追加することで項目数も増やせます。
style.cssはアコーディオンのレイアウトとデザインを設定するファイルです。全体の最大横幅や余白、背景色、枠線、角丸、縦長ボタンの横幅と高さ、右側へ表示するコンテンツの横幅などを変更できます。writing-mode:vertical-rl;でボタンの文字を縦書きにし、overflow-x:auto;によって表示幅を超えた場合だけアコーディオン部分を横スクロールできるようにしています。
script.jsは各アコーディオンの開閉を制御するファイルです。縦長ボタンをクリックすると、そのボタンを含む項目へis-openクラスを付け外しします。各項目を独立して切り替えるため、別の項目を開いても先に開いた項目は閉じず、複数のコンテンツを同時に表示できます。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを同じ階層で配置します。そのあとsample/index.htmlをブラウザで開いてください。「サービス」「料金」「問合せ」の縦長ボタンをクリックすると、その項目の内容がボタンの右側へ表示されます。同じボタンをもう一度クリックすると、その項目だけを閉じられます。
複数のボタンを順番にクリックすると、それぞれの内容を同時に開いた状態にできます。表示内容がアコーディオンエリアの横幅を超えた場合は、アコーディオン部分を左右へスクロールして内容を確認できます。
カスタマイズできる内容
index.htmlでは全体のタイトル、説明文、縦長ボタンの文字、右側へ表示する見出しと本文を変更できます。「サービス」「料金」「問合せ」を用途に合わせた項目名へ変更したり、各コンテンツの文章を書き換えたりできます。
style.cssでは全体の最大横幅、背景色、余白、枠線、角丸、項目同士の間隔、縦長ボタンの横幅と高さ、コンテンツの横幅、文字色、行間などを変更できます。また、overflow-x:auto;による横スクロール表示を利用しているため、複数項目を開いたときもページ全体ではなくアコーディオンエリア内で横方向へ移動できます。
数値調整
style.css
max-width:700px;
アコーディオン全体の最大横幅です。値を大きくすると表示エリアが横に広がり、小さくするとコンパクトになります。
margin:40px auto;
アコーディオン全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。
padding:32px;
アコーディオン全体の内側余白です。値を大きくすると内容と外枠の間隔が広がります。
border-radius:18px;
アコーディオン全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
全体タイトルの文字サイズです。値を大きくするとタイトルが大きくなり、小さくすると控えめになります。
margin-bottom:24px;
説明文の下側余白です。24pxを大きくすると説明文とアコーディオン部分の間隔が広がります。
min-height:260px;
横スクロール表示エリアと縦長ボタンの最小高さです。値を大きくすると縦方向に長くなり、小さくすると低くなります。
gap:12px;
各アコーディオン項目の間隔です。値を大きくすると項目同士の間隔が広がります。
border-radius:12px;
各アコーディオン項目の角丸です。値を大きくすると丸みが強くなります。
width:64px;
縦長ボタンの横幅です。値を大きくするとボタンが太くなり、小さくすると細くなります。
padding:16px 10px;
縦長ボタンの内側余白です。16pxが上下、10pxが左右の余白を表します。
margin-top:10px;
縦長ボタン内の「+」「-」記号と文字との間隔です。値を大きくすると記号との距離が広がります。
width:260px;
右側へ表示するコンテンツの横幅です。値を大きくすると内容部分が横に広がり、小さくすると狭くなります。
padding:18px;
右側へ表示するコンテンツの内側余白です。値を大きくすると文章と枠線との間隔が広がります。
font-size:18px;
右側コンテンツ内の見出し文字サイズです。値を大きくすると見出しが大きくなります。
margin:0 0 10px;
コンテンツ内の見出し下側の余白です。10pxを大きくすると本文との間隔が広がります。
line-height:1.8;
右側へ表示する本文の行間です。値を大きくすると行間が広がり、小さくすると詰まった表示になります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%とmax-width:700pxによって、画面幅に合わせてアコーディオン全体が縮小されます。アコーディオン表示エリアにはoverflow-x:auto;を指定しているため、複数の項目を開いて必要な横幅が大きくなった場合でも、ページ全体ではなくアコーディオン部分だけを横スクロールできます。
また、画面幅640px以下ではpadding:24px 18px;へ変更して全体の内側余白を小さくしています。スマートフォン・タブレット・PCで利用でき、狭い画面では横スクロールを使って右方向へ展開した内容を確認できます。
コメント