HTML/CSSだけで1つしか開かないアコーディオンを作る方法【HTML/CSS・サンプルコード付き】

アコーディオン

HTML/CSSだけで1つしか開かないアコーディオンを作る方法

HTMLとCSSだけで1つしか開かないアコーディオンを作る方法を紹介します。このサンプルでは、ラジオボタンの仕組みを利用して、一度に1つの項目だけを開けるアコーディオンを実装しています。JavaScriptを使用しないため、シンプルな構成で導入できるのが特徴です。

新しい項目を開くと、それまで開いていた項目は自動で閉じます。そのため、FAQページ、お問い合わせページ、商品説明、管理画面の設定項目など、多くの情報を整理して表示したい場面に適しています。HTMLとCSSだけで動作するため、JavaScriptを利用できない環境でも導入しやすい構成です。

コードはHTMLとCSSのみで構成されているため、そのままコピペして利用できます。項目数や見出し、本文はHTMLを書き換えるだけで簡単に変更でき、色や余白、角丸などのデザインはCSSから自由にカスタマイズできます。レスポンシブにも対応しているため、スマートフォン・タブレット・PCでも快適に利用できます。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

HTML/CSSだけで作るアコーディオン

見出しをクリックすると、1つだけ内容を表示できます。

HTMLとCSSだけで開閉動作を実現できます。
ラジオボタンを利用するため、常に1つだけ開いた状態になります。
FAQ、お問い合わせ、商品説明、管理画面などで利用できます。

見出しをクリックすると、開いていた項目が閉じ、新しい項目だけが表示されます。

コードをコピーして使おう!

<!DOCTYPE html>
<html lang="ja">
<head>

  <!-- 文字コード -->
  <meta charset="UTF-8">

  <!-- スマートフォン表示対応 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ページタイトル -->
  <title>HTML/CSSだけで1つしか開かないアコーディオン</title>

  <!-- CSSファイルを読み込み -->
  <link rel="stylesheet" href="style.css">

</head>
<body>

  <!-- アコーディオン全体 -->
  <div class="html-css-one-open-accordion_wrap">

    <!-- タイトル -->
    <div class="html-css-one-open-accordion_title">
      HTML/CSSだけで作るアコーディオン
    </div>

    <!-- 説明文 -->
    <p class="html-css-one-open-accordion_text">
      見出しをクリックすると、1つだけ内容を表示できます。
    </p>

    <!-- アコーディオン1の選択用ラジオボタン -->
    <input
      class="html-css-one-open-accordion_radio"
      type="radio"
      name="accordion"
      id="accordion1">

    <!-- アコーディオン1 -->
    <div class="html-css-one-open-accordion_item">

      <!-- アコーディオン1の見出し -->
      <label
        class="html-css-one-open-accordion_label"
        for="accordion1">
        アコーディオンとは?
      </label>

      <!-- アコーディオン1の内容 -->
      <div class="html-css-one-open-accordion_content">
        HTMLとCSSだけで開閉動作を実現できます。
      </div>

    </div>

    <!-- アコーディオン2の選択用ラジオボタン -->
    <input
      class="html-css-one-open-accordion_radio"
      type="radio"
      name="accordion"
      id="accordion2"
     >

    <!-- アコーディオン2 -->
    <div class="html-css-one-open-accordion_item">

      <!-- アコーディオン2の見出し -->
      <label
        class="html-css-one-open-accordion_label"
        for="accordion2">
        このサンプルの特徴
      </label>

      <!-- アコーディオン2の内容 -->
      <div class="html-css-one-open-accordion_content">
        ラジオボタンを利用するため、常に1つだけ開いた状態になります。
      </div>

    </div>

    <!-- アコーディオン3の選択用ラジオボタン -->
    <input
      class="html-css-one-open-accordion_radio"
      type="radio"
      name="accordion"
      id="accordion3">

    <!-- アコーディオン3 -->
    <div class="html-css-one-open-accordion_item">

      <!-- アコーディオン3の見出し -->
      <label
        class="html-css-one-open-accordion_label"
        for="accordion3">
        利用シーン
      </label>

      <!-- アコーディオン3の内容 -->
      <div class="html-css-one-open-accordion_content">
        FAQ、お問い合わせ、商品説明、管理画面などで利用できます。
      </div>

    </div>

  </div>

</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。

ファイル構成と設置方法

このサンプルはHTMLとCSSの2ファイルで構成された、1つしか開かないアコーディオンです。index.html にアコーディオンの見出し・本文・ラジオボタンを記述し、style.css でデザインと開閉状態を設定しています。JavaScriptや外部ライブラリは使用せず、同じ name 属性を持つラジオボタンの仕組みによって、一度に1つの項目だけが開きます。

sample/
├── index.html
└── style.css

各ファイルの役割
index.html はアコーディオン全体の構造を記述するファイルです。見出し、本文、項目数、最初に開いておく項目を変更できます。
style.css はアコーディオン全体の横幅、背景色、文字色、余白、枠線、角丸、開閉部分の表示状態を設定するファイルです。

設置方法・使い方
sample フォルダ内へ index.html と style.css を配置し、sample/index.html をブラウザで開きます。アコーディオンの見出しをクリックすると対応する内容が表示され、別の見出しをクリックすると、それまで開いていた項目が自動で閉じます。

カスタマイズできる内容
index.html の label 要素を書き換えると見出しを変更でき、html-css-one-open-accordion_content 内を書き換えると表示内容を変更できます。アコーディオンを追加する場合は、ラジオボタンと項目部分を1組として追加し、id と for に同じ固有の値を指定します。最初に開く項目は、対象のラジオボタンへ checked を付けて設定します。
style.css を編集すると、背景色、文字色、プラス・マイナス記号の色、横幅、余白、枠線、角丸、文字サイズなどを変更できます。

数値調整
style.css の max-width:700px; はアコーディオン全体の最大横幅です。値を大きくすると広くなり、小さくするとコンパクトになります。
padding:32px;padding:16px 18px; は全体や見出し内の余白、font-size:22px;font-size:16px; は文字サイズを設定します。
border-radius:18px;border-radius:12px; の値を大きくすると角の丸みが強くなり、小さくすると角張った形になります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.css の width:100%;max-width:700px; により、画面幅に合わせてアコーディオン全体が縮小します。画面幅640px以下ではメディアクエリによって body とアコーディオン全体の余白を小さくしているため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント