左方向に開くアコーディオンの作り方
左方向に開くアコーディオンの作り方を紹介します。このサンプルでは、見出しボタンをクリックすると、その項目に対応する内容がボタンの左側へ表示されるアコーディオンを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="accordion-open-left_wrap">
<!-- タイトル -->
<div class="accordion-open-left_title">
左方向に開くアコーディオン
</div>
<!-- 説明文 -->
<p class="accordion-open-left_text">
見出しをクリックすると、内容がボタンの左側に表示されます。
</p>
<!-- 1つ目の項目 -->
<div class="accordion-open-left_item">
<button class="accordion-open-left_button" type="button">
サービス詳細
</button>
<div class="accordion-open-left_content">
横方向のスペースを使って、ボタンの左側へ内容を表示できます。
</div>
</div>
<!-- 2つ目の項目 -->
<div class="accordion-open-left_item">
<button class="accordion-open-left_button" type="button">
料金プラン
</button>
<div class="accordion-open-left_content">
料金やオプションなどの補足情報を左方向へ表示できます。
</div>
</div>
<!-- 3つ目の項目 -->
<div class="accordion-open-left_item">
<button class="accordion-open-left_button" type="button">
お問い合わせ
</button>
<div class="accordion-open-left_content">
管理画面やサイドメニュー風のレイアウトにも利用できます。
</div>
</div>
</div>
<!-- JavaScriptファイル -->
<script src="script.js"></script>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。
InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。
ファイル構成と設置方法
このサンプルはHTML、CSS、JavaScriptの3ファイルで構成されています。HTMLでは左方向に開くアコーディオンの見出しボタンと表示内容を作成し、CSSではボタンと内容を横方向へ配置して、内容がボタンの左側に表示されるレイアウトを設定します。JavaScriptでは見出しをクリックしたときに開閉用のクラスを切り替え、各項目を個別に開閉します。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlはアコーディオン全体を構成するファイルです。タイトル、説明文、各見出しボタン、開いたときに左側へ表示する内容を変更できます。項目を追加する場合は、見出しボタンと表示内容を含むアコーディオン項目を追加します。
style.cssはアコーディオンのデザインと配置を設定するファイルです。全体の横幅や余白、背景色、枠線、角丸、見出しボタンの横幅、文字色などを変更できます。また、アコーディオン項目を横方向へ配置し、開いた内容が見出しボタンの左側に表示されるレイアウトを設定します。
script.jsはアコーディオンの開閉を制御するファイルです。各見出しボタンのクリックを検知し、クリックされた項目へ開閉用のクラスを付け外しすることで、内容の表示と非表示を切り替えます。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。表示された見出しボタンをクリックすると、その項目の内容がボタンの左側に表示されます。開いている見出しをもう一度クリックすると内容が閉じます。
カスタマイズできる内容
index.htmlではアコーディオン全体のタイトル、説明文、各見出しボタンの文章、開いたときに表示する内容を変更できます。サービス詳細、料金プラン、お問い合わせなど、横方向のスペースを利用して補足情報を表示したい内容へ変更できます。
style.cssではアコーディオン全体の最大横幅、余白、背景色、枠線、角丸、見出しボタンの横幅、文字色、開いた内容の余白などを変更できます。見出しボタンと内容の配置もstyle.cssで設定されているため、左方向へ開くレイアウトを維持したまま見た目を調整できます。
script.jsでは各見出しボタンをクリックしたときに、対象となるアコーディオン項目のis-openクラスを切り替えています。各項目は独立しているため、複数の項目を同時に開いた状態にできます。
数値調整
style.css
max-width:700px;
アコーディオン全体の最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。
margin:40px auto;
アコーディオン全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。
padding:32px;
アコーディオン全体の内側余白です。値を大きくすると内容と外枠の間隔が広がり、小さくすると狭くなります。
border-radius:18px;
アコーディオン全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
タイトルの文字サイズです。値を大きくするとタイトルが大きくなり、小さくすると控えめになります。
margin-bottom:24px;
説明文の下側余白です。24pxを大きくするとアコーディオン項目との間隔が広がり、小さくすると狭くなります。
margin-bottom:12px;
各アコーディオン項目の下側余白です。12pxを大きくすると項目同士の間隔が広がり、小さくすると狭くなります。
border-radius:12px;
各アコーディオン項目の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
width:180px;
見出しボタンの横幅です。値を大きくするとボタン部分が横に広がり、小さくすると表示内容に使える横幅が広がります。
padding:16px 18px;
見出しボタンの内側余白です。上下の16pxを大きくするとボタンが高くなり、左右の18pxを大きくすると文字と端の間隔が広がります。
padding:18px;
開いた内容部分の内側余白です。値を大きくすると文章と枠の間隔が広がり、小さくすると詰まった表示になります。
line-height:1.8;
開いた内容部分の行間です。値を大きくすると行間が広がり、小さくすると詰まった表示になります。
レスポンシブ対応
このサンプルはstyle.cssで画面幅に合わせてアコーディオン全体が縮小するように設定します。width:100%とmax-width:700pxを使用し、狭い画面では見出しボタンと内容が収まるようにレイアウトを調整することで、スマートフォン・タブレット・PCで利用できます。
コメント