Webサイト上には、クリックで開閉できるアコーディオンメニュー(折りたたみメニュー)がよく使用されていますね。
当サイトでも紹介している通り、アコーディオンメニューを作成するにはJavaScriptを書く必要があります。
しかし、実はHTML5から追加されたdetails
とsummary
タグを使用することで、HTMLのみで折りたたみメニューを作成することができます。
今回の記事では、このdetails
とsummary
を使用して、簡易的なアコーディオンメニューを作成する方法を紹介します。
- アコーディオンメニューを手軽に実装したい
- JavaScriptを書かずに作りたい
- IEは対応しなくてよい
こういった方には便利かと思いますので、ぜひ参考にしてみてください。
details・summaryで作成したアコーディオンメニューの実装DEMO
まずは、details
とsummary
でどのようなアコーディオンメニューを作成できるか確認してみましょう。
以下に3種類の実装DEMOを用意しましたので、動作をチェックしてみてください。
実装DEMO1. デフォルトのdetails/summaryタグ(スタイルなし)
まずはdetails
とsummary
タグをデフォルトのスタイルのまま使用した例です。
タイトル(クリックしてください)
サンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキスト。
実装DEMO2. 簡易スタイル付きのdetails/summaryタグ
続いては、CSSで簡易スタイルをつけたバージョンです。
タイトル(クリックしてください)
サンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキスト。
実装DEMO3. 簡易スタイル付きのdetails/summaryタグ(始めから開いておく)
open
属性を付与することで、最初からアコーディオンを開いておくことが可能です。
タイトル(クリックしてください)
サンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキスト。
以上で実装DEMOの紹介は終わりです!
次はdetails
とsummary
タグの記述方法を見ていきましょう。
details・summaryの記述方法
details
とsummary
の実際の記述方法は、以下の通りです。
<details>
<summary>ここにキャプションを入力</summary>
<p>ここにアコーディオンの中身を入力</p>
</details>
details
タグでアコーディオン全体を囲う- キャプション(クリックする部分)を
summary
タグで囲う - アコーディオンの中身を作成する
上記の順番で詳しく説明していきますね。
①detailsタグでアコーディオン全体を囲う
まずは折りたたみたい要素の全体をdetails
タグで囲います。
<details>
<!-- ここにsummaryとその他要素を記入 -->
</details>
details
タグにはopen
属性を付与することができ、その場合アコーディオンが開いた状態になります。
<details open>
<!-- ここにsummaryとその他要素を記入 -->
</details>
②キャプション(クリックする部分)をsummaryタグで囲う
summary
タグには、details
タグで囲っている要素の要約、キャプション、タイトル等を記述します。
また、summary
で囲っている部分がクリックできる要素となります。
<details>
<summary>ここにキャプションを入力</summary>
</details>
summary
タグの中にはテキストの他に、h1
などの見出し要素やstrong
タグ等が使用できます。
<details>
<summary><h3>ここにタイトルを入力</h3></summary>
</details>
<details>
<summary><strong>ここに強調したいキャプションを入力</strong></summary>
</details>
③アコーディオンの中身を作成する
最後にアコーディオンの中身を作成していきます。
中にはテキスト要素をそのまま記述しても良いですし、p
タグ、ul
・li
タグ等も自由に使用可能です。
<details>
<summary>ここにキャプションを入力</summary>
アコーディオンの中身のテキストを入力
</details>
<details>
<summary>ここにキャプションを入力</summary>
<p>アコーディオンの中身のテキストを入力</p>
</details>
<details>
<summary>ここにキャプションを入力</summary>
<ul>
<li>リスト1</li>
<li>リスト2</li>
<li>リスト3</li>
</ul>
</details>
それぞれの見た目は以下のようになります。
ここにキャプションを入力
アコーディオンの中身のテキストを入力ここにキャプションを入力
アコーディオンの中身のテキストを入力
ここにキャプションを入力
- リスト1
- リスト2
- リスト3
以上でdetails
とsummary
タグの記述方法の説明は終わりです。
スタイルなしだと少しシンプルすぎるので、実装DEMOで紹介したようなアコーディオンの見た目になるCSSコードも紹介しておきます。
details・summaryタグをCSSで装飾する
ここでは以下のような見た目にするためのスタイルを紹介します!
タイトル(クリックしてください)
サンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキスト。
details {
border: 1px solid #333;
border-radius: 4px;
}
summary {
cursor: pointer;
padding: 10px;
}
summary p {
padding: 10px;
border-top: 1px solid #333;
}
まずは全体を囲うdetails
タグに対してborder
をつけることで、要素の境界線を表示します。
summary
タグには、クリックできる要素というのをユーザーに知らせるため、cursor:pointer
を指定します。
これでマウスカーソルを当てると、ポインターが表示されるようになりました。
あとはpadding
で余白等を調整して終わりです!
ここでは簡易的にしたかったので最低限のスタイルのみですが、ぜひいろんな装飾を試してみてください。
details・summaryタグのブラウザ対応状況
details
・summary
タグのブラウザ対応状況は、以下の通りです。
IE以外のモダンブラウザではほぼサポートされていますね。
もしIEにも対応させたいという場合はpolyfillが用意されていますので、以下をチェックしてみてください。
【まとめ】details・summaryタグを使用するとHTMLだけでアコーディオンメニューを実装可能!
以上、details
とsummary
タグを使用して、HTMLのみでアコーディオンメニューを実装する方法を紹介しました。
JSで作成したアコーディオンのほうがアニメーションやデザイン面の自由度が高いですが、簡易的なものならHTMLのみで十分ですね。
JavaScriptでアコーディオンメニューを作成する方法も別記事で紹介していますので、ぜひそちらも参考にしてみてください。
コメント