指定時間後に自動で閉じるアコーディオンを作る方法【HTML/CSS/JavaScript・サンプルコード付き】

アコーディオン

指定時間後に自動で閉じるアコーディオンを作る方法

指定時間後に自動で閉じるアコーディオンを作る方法を紹介します。このサンプルでは、閉じている見出しをクリックすると対応する内容が開き、開いてから3秒が経過するとその項目だけが自動で閉じます。HTML・CSS・JavaScriptのみで実装し、外部ライブラリは使用しません。

複数の項目を同時に開くことができ、それぞれを開いた時点から個別に3秒を計測します。先に開いた項目は先に閉じ、後から開いた項目はその項目を開いてから3秒後に閉じるため、複数のタイマーが互いに影響しません。FAQページ、商品説明、管理画面、会員サイトのヘルプなど、内容を一定時間だけ表示したい場面で利用できます。

タイトル、説明文、各見出し、表示内容はHTMLから変更できます。CSSでは横幅、余白、背景色、枠線、角丸、文字サイズなどを調整でき、JavaScriptでは自動で閉じるまでの時間を変更できます。各見出しは通常どおりクリックして手動で閉じることもでき、レスポンシブに対応しているため、スマートフォン・タブレット・PCで利用できます。

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

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

<!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="auto-close-accordion_wrap">

    <!-- タイトル -->
    <div class="auto-close-accordion_title">
      指定時間後に自動で閉じるアコーディオン
    </div>

    <!-- 説明文 -->
    <p class="auto-close-accordion_text">
      開いた項目は3秒後に自動で閉じます。複数開いた場合も、それぞれを開いた時点から個別に3秒を計測します。
    </p>

    <!-- 項目1 -->
    <div class="auto-close-accordion_item">

      <!-- 見出しボタン -->
      <button class="auto-close-accordion_button" type="button">
        アコーディオンとは?
      </button>

      <!-- 開閉する内容 -->
      <div class="auto-close-accordion_content">
        アコーディオンは見出しごとに内容を開閉できるUIです。この項目は開いてから3秒後に閉じます。
      </div>

    </div>

    <!-- 項目2 -->
    <div class="auto-close-accordion_item">

      <!-- 見出しボタン -->
      <button class="auto-close-accordion_button" type="button">
        複数同時に開ける?
      </button>

      <!-- 開閉する内容 -->
      <div class="auto-close-accordion_content">
        他の項目が開いている状態でも自由に開けます。それぞれ異なるタイミングで自動的に閉じます。
      </div>

    </div>

    <!-- 項目3 -->
    <div class="auto-close-accordion_item">

      <!-- 見出しボタン -->
      <button class="auto-close-accordion_button" type="button">
        必要なファイル
      </button>

      <!-- 開閉する内容 -->
      <div class="auto-close-accordion_content">
        HTML・CSS・JavaScriptの3ファイルで作成できます。外部ライブラリは使用しません。
      </div>

    </div>

  </div>

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

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

ファイル構成と設置方法

このサンプルは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ではアコーディオン全体の横幅、背景色、余白、文字サイズ、文字色、枠線、角丸、開閉アイコンのサイズや色などを変更できます。

script.jsでは自動で閉じる時間や開閉動作を変更できます。用途に応じて自動で閉じるまでの待機時間を長くしたり短くしたりできます。

数値調整
style.css
max-width:700px;
アコーディオン全体の最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

margin:40px auto;
全体の上下余白です。40pxを変更すると上下の間隔が変わります。

padding:32px;
アコーディオン全体の内側余白です。値を大きくすると内容と枠線の間隔が広がります。

border-radius:18px;
アコーディオン全体の角丸です。値を大きくすると丸みが強くなります。

font-size:22px;
タイトルの文字サイズです。値を変更するとタイトルの大きさが変わります。

margin-bottom:12px;
各アコーディオン項目の間隔です。値を大きくすると項目同士の間隔が広がります。

padding:16px 18px;
見出しボタンの内側余白です。値を変更するとクリックできる範囲や見た目の大きさが変わります。

font-size:16px;
見出しボタンの文字サイズです。値を変更すると見出し文字の大きさが変わります。

font-size:22px;
「+」「-」アイコンのサイズです。値を大きくするとアイコンが大きく表示されます。

padding:0 18px 18px;
開いた内容の余白です。値を変更すると本文と枠線の間隔が変わります。

script.js
3000
自動で閉じるまでの待機時間です。3000は3秒を表します。値を大きくすると長く表示され、小さくすると早く閉じます。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-width:700pxにより画面幅に合わせて横幅が調整されます。また、640px以下ではpadding:24px 18px;へ変更して余白を小さくしているため、スマートフォン・タブレット・PCでも快適に利用できます。


こちらもおすすめ


コメント