HTML/CSSだけで動くアコーディオンの作り方
HTML/CSSだけで動くアコーディオンの作り方を紹介します。このサンプルでは、HTMLのdetails要素とsummary要素を使用し、見出しをクリックすると対応する内容を開閉できるアコーディオンを実装します。JavaScriptや外部ライブラリを使用しないため、シンプルな構成で導入できます。
各項目はそれぞれ独立して開閉でき、複数の内容を同時に表示できます。FAQ、お問い合わせページ、商品説明、利用案内、管理画面の補足説明など、情報量の多いページを整理して表示したい場面に適しています。ブラウザに備わっている開閉機能を利用するため、少ないコードで基本的なアコーディオンを作成できます。
HTMLでは見出しと本文、項目数を変更でき、CSSでは背景色、文字色、枠線、余白、角丸、開閉アイコンなどを調整できます。画面幅に合わせて横幅が縮小される構成のため、スマートフォン・タブレット・PCでも利用しやすく、初心者でもカスタマイズしやすいサンプルです。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
見出しをクリックすると、JavaScriptを使わずに内容を開閉できます。
アコーディオンとは?
どんな場面で使う?
JavaScriptは必要?
各見出しをクリックすると、対応する内容の開閉動作を確認できます。
コードをコピーして使おう!
<!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>
<!-- アコーディオン全体 -->
<div class="html-css-accordion_wrap">
<!-- タイトル -->
<h1 class="html-css-accordion_title">
HTML/CSSだけで動くアコーディオン
</h1>
<!-- 説明文 -->
<p class="html-css-accordion_text">
見出しをクリックすると、JavaScriptを使わずに内容を開閉できます。
</p>
<!-- アコーディオン項目 -->
<details class="html-css-accordion_item">
<summary class="html-css-accordion_summary">
アコーディオンとは?
</summary>
<div class="html-css-accordion_content">
見出しをクリックして内容を表示・非表示にできるUIです。
</div>
</details>
<!-- アコーディオン項目 -->
<details class="html-css-accordion_item">
<summary class="html-css-accordion_summary">
どんな場面で使う?
</summary>
<div class="html-css-accordion_content">
FAQ、お問い合わせページ、商品説明などで利用できます。
</div>
</details>
<!-- アコーディオン項目 -->
<details class="html-css-accordion_item">
<summary class="html-css-accordion_summary">
JavaScriptは必要?
</summary>
<div class="html-css-accordion_content">
このサンプルはHTMLとCSSだけで動作します。
</div>
</details>
</div>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
ファイル構成と設置方法
このサンプルは、HTMLとCSSの2ファイルで構成されたアコーディオンです。HTMLのdetails要素とsummary要素に備わっている開閉機能を利用するため、JavaScriptや外部ライブラリを使わずに動作します。index.htmlでアコーディオンの見出しと本文を作成し、style.cssで全体の横幅、配色、余白、枠線、角丸、開閉アイコンなどを整えています。
各アコーディオン項目は独立して開閉できるため、複数の項目を同時に開いた状態にできます。FAQ、お問い合わせページ、商品説明、利用案内など、複数の情報をコンパクトに整理したいページへ設置できます。
ファイルを同じフォルダへ配置してindex.htmlをブラウザで開くだけで動作を確認できます。表示する文章や項目数はindex.htmlで変更し、背景色、文字色、横幅、余白、角丸などの見た目はstyle.cssで調整できます。
sample/
├── index.html
└── style.css
各ファイルの役割
index.htmlは、アコーディオン全体の構造を作るファイルです。ページタイトル、説明文、各項目の見出し、開いたときに表示する本文を編集できます。アコーディオンを増やす場合は、details要素を同じ形式で追加します。
style.cssは、ページ全体とアコーディオンの見た目を設定するファイルです。全体の横幅、背景色、文字色、枠線、余白、角丸、プラス・マイナス記号、スマートフォン表示時の余白を変更できます。
設置方法・使い方
sampleフォルダを作成し、その中へindex.htmlとstyle.cssを配置します。2つのファイルは同じ階層へ保存してください。
配置後にsample/index.htmlをブラウザで開きます。各見出しをクリックすると対応する本文が表示され、もう一度クリックすると閉じます。JavaScriptは使用していないため、追加の設定やライブラリの読み込みは不要です。
カスタマイズできる内容
index.htmlでは、タイトル、説明文、アコーディオンの見出し、本文、項目数、表示順を変更できます。各項目はdetails要素で構成され、見出しはsummary要素、本文はhtml-css-accordion_contentクラスを付けた要素へ記述します。
style.cssでは、backgroundで背景色、colorで文字色、borderで枠線、border-radiusで角丸、paddingで内側余白を変更できます。summary::afterのcontentを編集すると、閉じている状態の記号を変更できます。details[open] summary::afterのcontentを編集すると、開いている状態の記号を変更できます。
数値調整
style.cssのmax-width:700px;はアコーディオン全体の最大横幅です。値を大きくすると広くなり、小さくするとコンパクトになります。
padding:32px;はアコーディオン全体の内側余白です。値を大きくすると外枠と内容の間隔が広がり、小さくすると狭くなります。
border-radius:18px;はアコーディオン全体の角丸です。値を大きくすると丸みが強くなり、小さくすると直線的な形になります。
margin-bottom:12px;は各アコーディオン項目の間隔です。値を大きくすると項目同士の間隔が広がります。
font-size:22px;は開閉記号の大きさです。値を大きくするとプラス・マイナス記号が大きく表示されます。
レスポンシブ対応
style.cssでは、アコーディオン全体にwidth:100%とmax-width:700pxを指定し、画面幅に合わせて自動的に縮小するようにしています。
また、@media (max-width:640px)で画面幅640px以下のときに内側余白を24px 18pxへ変更しています。これにより、スマートフォン・タブレット・PCで横幅や余白が崩れにくい構成になっています。
コメント