フェードイン・フェードアウトで開閉するアコーディオンの作り方
フェードイン・フェードアウトで開閉するアコーディオンの作り方を紹介します。このサンプルでは、HTML・CSS・JavaScriptを使用して、見出しをクリックすると内容がゆっくりとフェードしながら表示・非表示へ切り替わるアコーディオンを実装します。通常の瞬時に切り替わるアコーディオンよりも動きが滑らかになり、情報の表示・非表示が分かりやすいUIを作成できます。
FAQページ、お問い合わせページ、商品説明、サービス紹介、管理画面の設定項目など、複数の情報を整理して表示したい場面で活用できます。クリックした項目だけがフェードイン・フェードアウトで開閉するため、ページ全体の印象も自然になり、閲覧中の視線移動もスムーズになります。派手すぎないアニメーションなので、さまざまなWebサイトへ取り入れやすいデザインです。
タイトルや見出し、本文は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="fade-accordion_wrap">
<!-- タイトル -->
<div class="fade-accordion_title">
フェードイン・フェードアウトアコーディオン
</div>
<!-- 説明文 -->
<p class="fade-accordion_text">
見出しをクリックすると、内容がゆっくりフェードしながら開閉します。
</p>
<!-- 1つ目のアコーディオン項目 -->
<div class="fade-accordion_item">
<!-- 1つ目の見出しボタン -->
<button
class="fade-accordion_button"
type="button"
aria-expanded="false">
アコーディオンとは?
</button>
<!-- 1つ目の開閉内容 -->
<div class="fade-accordion_content">
<div class="fade-accordion_content-inner">
アコーディオンは、見出しをクリックして内容の表示・非表示を切り替えられるUIです。このサンプルでは、内容がゆっくりフェードしながら開閉します。
</div>
</div>
</div>
<!-- 2つ目のアコーディオン項目 -->
<div class="fade-accordion_item">
<!-- 2つ目の見出しボタン -->
<button
class="fade-accordion_button"
type="button"
aria-expanded="false">
どんな場面で使う?
</button>
<!-- 2つ目の開閉内容 -->
<div class="fade-accordion_content">
<div class="fade-accordion_content-inner">
FAQ、商品説明、設定項目、お問い合わせページなど、複数の情報を整理して表示したい場面で利用できます。
</div>
</div>
</div>
<!-- 3つ目のアコーディオン項目 -->
<div class="fade-accordion_item">
<!-- 3つ目の見出しボタン -->
<button
class="fade-accordion_button"
type="button"
aria-expanded="false">
必要なファイルは?
</button>
<!-- 3つ目の開閉内容 -->
<div class="fade-accordion_content">
<div class="fade-accordion_content-inner">
HTML、CSS、JavaScriptの3ファイルで作成できます。外部ライブラリは使用しません。
</div>
</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を配置してください。index.htmlからstyle.cssとscript.jsを読み込んだ状態で、sample/index.htmlをブラウザで開くと利用できます。見出しをクリックすると対応する内容がフェードインし、もう一度クリックするとフェードアウトしながら閉じます。
カスタマイズできる内容
index.htmlではタイトル、説明文、見出し、本文を自由に変更できます。アコーディオンの項目を追加・削除することもできます。
style.cssでは横幅、余白、背景色、文字色、枠線、角丸、フェード時間を変更できます。開いたときの最大高さも調整できるため、長い文章を表示する場合にも対応できます。
script.jsでは開閉処理を管理しています。クリック時の動作や開閉状態の切り替え方法を変更したい場合は、このファイルを編集します。
数値調整
style.css
max-width:700px;
アコーディオン全体の最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。
padding:32px;
アコーディオン全体の内側余白です。値を大きくすると余白が広がり、小さくすると詰まった表示になります。
border-radius:18px;
アコーディオン全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
padding:16px 18px;
開閉ボタンの内側余白です。値を変更するとクリック領域やボタンサイズが変わります。
transition:max-height .7s ease, opacity .7s ease;
フェードイン・フェードアウトの時間です。0.7秒でゆっくり開閉します。値を大きくするとよりゆっくり、小さくすると素早く切り替わります。
max-height:300px;
開いた状態の最大高さです。内容が収まらない場合は値を大きくしてください。文章量が少ない場合は小さくしても利用できます。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%とmax-width:700pxによって画面幅に応じて縮小表示されます。また、640px以下ではpadding:24px 18px;へ変更して余白を調整しているため、スマートフォン・タブレット・PCでも見やすく利用できます。
コメント