【PR】を含みます。

フロントエンド

【CSS不要】HTMLのみでアコーディオン(開閉ボタン)を実装する方法

CSS不要 HTMLのみでアコーディオン(開閉ボタン)を実装する方法

Webサイトでよく見かける「アコーディオンメニュー」を、JavaScriptやCSSを使わずにHTMLだけで実装できることをご存知ですか?

本記事では、HTML5で導入されたdetailsタグとsummaryタグを活用し、誰でも簡単に作れるアコーディオン(開閉ボタン)の作り方を分かりやすく解説します。

コピペで使えるサンプルコードも掲載しているので、ぜひご活用ください。

アコーディオンをHTMLとCSSのみで実装する方法は以下の記事で紹介しています。

あわせて読む
HTML・CSS アコーディオンメニューをHTMLとCSSのみで実装する方法

【HTML・CSS】アコーディオンメニューをHTMLとCSSのみで実装する方法

もくじ単体用アコーディオン(折りたたみメニュー)【サンプル】単体用アコーディオン【コピペOK】HTML・CSSのみで単体用アコーディオンを実装単体用アコーディオンを複数利用する方法2段のアコーディオン ...

アコーディオンをjQueryで実装する方法は以下の記事で紹介しています。

あわせて読む
jQuery アコーディオン(開閉ボタン)を実装する方法

【jQuery】アコーディオン(開閉ボタン)を実装する方法

もくじ【サンプル】jQueryでアコーディオンメニューを実装【コピペOK】jQueryを使用したアコーディオンメニューの実装コード【サンプル】jQueryでアクセシビリティ対応済みのアコーディオンメニ ...

アコーディオンをJavaScriptで実装する方法は以下の記事で紹介しています。

あわせて読む
JavaScript jQuery未使用でアコーディオン(開閉ボタン)を実装する方法

【JavaScript】jQuery未使用でアコーディオン(開閉ボタン)を実装する方法

もくじ【実装例】jQuery未使用のアコーディオンメニュー(開閉ボタン)のサンプル【コピペOK】jQuery未使用のアコーディオンメニューの実装コード【実装例】アクセシビリティ対応済みのアコーディオン ...

【サンプル】HTMLのみでアコーディオンメニューを実装

Q. 質問1
A. 回答1
Q. 質問2
A. 回答2

【実装コード】HTMLのみでアコーディオンメニューを実装

Copyをクリックするとコピーできます。

HTML
Copy
<details>
  <summary>Q. 質問1</summary>
  <p>A. 回答1</p>
</details>
<details>
  <summary>Q. 質問2</summary>
  <p>A. 回答2</p>
</details>

detailsタグとsummaryタグにCSS当ててデザインを調整

HTMLのみだとデザインが単調なため、detailsタグとsummaryタグにCSSを当てます。

アコーディオンが開いているときdetailsタグにopen属性が自動で付与されます。

この特性を利用して閉まっているときは「+」、開いているときは「‐」になるようにCSSで調整します。

デフォルトで表示される「▶」部分は、CSSで非表示にしています。

【サンプル】CSSで調整したアコーディオンメニュー

Q. 質問1
A. 回答1
Q. 質問2
A. 回答2

【実装コード】CSSで調整したアコーディオンメニュー

Copyをクリックするとコピーできます。

HTML
Copy
<details>
  <summary>Q. 質問1</summary>
  <div class="details_content">A. 回答1</div>
</details>
<details>
  <summary>Q. 質問2</summary>
  <div class="details_content">A. 回答2</div>
</details>
CSS
Copy
details {
  margin-bottom: 20px;
  border: solid 1px #f09896;
}
summary {
  position: relative;
  padding: 10px 35px 10px 20px;
  list-style: none; /* ▶を非表示 */
  cursor: pointer;
}
summary::-webkit-details-marker {
  display: none;
}
summary::before {
  position: absolute;
  top: 50%;
  right: 20px;
  width: 14px;
  height: 0;
  border-top: solid 2px #f09896;
  transform: translateY(-50%);
  content: "";
}
summary::after {
  position: absolute;
  top: 50%;
  right: 26px;
  width: 0;
  height: 14px;
  border-right: solid 2px #f09896;
  transform: translateY(-50%);
  content: "";
}
details[open] summary::after {
  opacity: 0;
}
.details_content {
  padding: 0 20px 10px;
}

まとめ

今回は、HTMLだけでアコーディオン(開閉ボタン)を実装する方法をご紹介しました。

detailsタグとsummaryタグを使えば、JavaScriptや複雑なCSSを使わずに、誰でも簡単にアコーディオンメニューを作成できます。

デザインを調整したい場合は、CSSを追加することで見た目も自由にカスタマイズ可能です。

ぜひご自身のWebサイトやブログで活用してみてください。

アコーディオンをHTMLとCSSのみで実装する方法は以下の記事で紹介しています。

あわせて読む
HTML・CSS アコーディオンメニューをHTMLとCSSのみで実装する方法

【HTML・CSS】アコーディオンメニューをHTMLとCSSのみで実装する方法

もくじ単体用アコーディオン(折りたたみメニュー)【サンプル】単体用アコーディオン【コピペOK】HTML・CSSのみで単体用アコーディオンを実装単体用アコーディオンを複数利用する方法2段のアコーディオン ...

アコーディオンをjQueryで実装する方法は以下の記事で紹介しています。

あわせて読む
jQuery アコーディオン(開閉ボタン)を実装する方法

【jQuery】アコーディオン(開閉ボタン)を実装する方法

もくじ【サンプル】jQueryでアコーディオンメニューを実装【コピペOK】jQueryを使用したアコーディオンメニューの実装コード【サンプル】jQueryでアクセシビリティ対応済みのアコーディオンメニ ...

アコーディオンをJavaScriptで実装する方法は以下の記事で紹介しています。

あわせて読む
JavaScript jQuery未使用でアコーディオン(開閉ボタン)を実装する方法

【JavaScript】jQuery未使用でアコーディオン(開閉ボタン)を実装する方法

もくじ【実装例】jQuery未使用のアコーディオンメニュー(開閉ボタン)のサンプル【コピペOK】jQuery未使用のアコーディオンメニューの実装コード【実装例】アクセシビリティ対応済みのアコーディオン ...

-フロントエンド
-