ページ遷移後も開閉状態を記憶するアコーディオンの作り方【HTML/CSS/JavaScript・サンプルコード付き】

アコーディオン

ページ遷移後も開閉状態を記憶するアコーディオンの作り方

HTML・CSS・JavaScriptを使って、ページを再読み込みした後や別ページへ移動して戻ってきた後でも、アコーディオンの開閉状態を保持する方法を紹介します。このサンプルでは、ブラウザの localStorage を利用して開いていた項目や閉じていた項目を保存し、次回アクセス時に自動で復元します。FAQページや設定画面、管理画面など、ユーザーが途中まで確認した状態を維持したい場合に便利です。

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

デモ

ページ遷移後も開閉状態を記憶するアコーディオン

アコーディオンを開閉した状態を保存し、再読み込み後も同じ状態を復元します。

ブラウザにデータを保存できる仕組みです。
FAQや設定画面で、前回の開閉状態を残したい場合に使えます。
HTML、CSS、JavaScriptの3つのファイルで作成できます。

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

<!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="remember-accordion-state_wrap">

    <!-- タイトル -->
    <div class="remember-accordion-state_title">
      ページ遷移後も開閉状態を記憶するアコーディオン
    </div>

    <!-- 説明文 -->
    <p class="remember-accordion-state_text">
      アコーディオンを開閉した状態を保存し、再読み込み後も同じ状態を復元します。
    </p>

    <!-- アコーディオン項目。data-accordion-id の値を保存用IDとして使う -->
    <div class="remember-accordion-state_item" data-accordion-id="faq1">

      <button class="remember-accordion-state_button" type="button">
        localStorageとは?
      </button>

      <div class="remember-accordion-state_content">
        ブラウザにデータを保存できる仕組みです。
      </div>

    </div>

    <!-- アコーディオン項目。data-accordion-id は項目ごとに別の値を指定する -->
    <div class="remember-accordion-state_item" data-accordion-id="faq2">

      <button class="remember-accordion-state_button" type="button">
        どんな場面で使う?
      </button>

      <div class="remember-accordion-state_content">
        FAQや設定画面で、前回の開閉状態を残したい場合に使えます。
      </div>

    </div>

    <!-- アコーディオン項目。保存した状態は次回アクセス時に復元される -->
    <div class="remember-accordion-state_item" data-accordion-id="faq3">

      <button class="remember-accordion-state_button" type="button">
        必要なファイルは?
      </button>

      <div class="remember-accordion-state_content">
        HTML、CSS、JavaScriptの3つのファイルで作成できます。
      </div>

    </div>

  </div>

  <!-- JavaScriptファイルを読み込み -->
  <script src="script.js"></script>

</body>
</html>

ファイル構成と設置方法

このサンプルでは、HTML・CSS・JavaScriptをそれぞれ別ファイルに分けて使用します。index.htmlstyle.cssscript.js を同じフォルダに配置してください。

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

index.html をブラウザで開くと、アコーディオンの開閉状態が localStorage に保存されます。ページを再読み込みした後も、前回開いていた項目が自動で復元されます。


コメント