今回の
聖遺物
今回ご紹介する古代魔導は、『details要素』
- アコーディオンだけでなく脚注にも使える優秀な古代魔法どうも、今回も私ジェミパラ・トラッセンダーが古代魔法をご紹介する。
今回ご紹介するのは『details要素』だ。
HTMLだけで開閉UIを作ることができる、主にアコーディオン用の特殊なHTML要素である。
しかし今回はアコーディオンとしてではなく、脚注として取り上げる。
文章中の文言へ注釈を付け、必要なときだけ表示する。あの脚注である。
まずはいきなり脚注として紹介する前に、details要素本来の機能をご覧に入れよう。
- details要素の概要details要素 は、ユーザー操作によって内容を開閉できるHTML要素だ。
基本形は非常に単純。
<details> <summary>ここをクリックして詳しく見る</summary> <p>ここに詳細情報を書く。</p> </details> - details要素の開閉デモ
ここをクリックして詳しく見る
ここに詳細情報を書く。
JavaScriptはいらない。
summary要素をクリックすれば、ブラウザ自身が開閉処理を行ってくれる。
最初から開いておきたい場合は、<details open>と『open属性』を付ければいい
あるいはJavaScriptから、details.open = true;のように操作することもできる。
開閉状態が変化すれば『toggle』イベントも発生する。
つまり details要素 は単にCSSで要素を隠しているのではない。
「開いている・閉じている」という状態そのものをHTMLが持っている。
これが大きな特徴だ。
details要素で作った脚注のサンプルデモ:https://labo.studio-happyvalley.com/details/base
details要素の登場と歴史
- 歴史details要素 はHTML5時代に登場した、すでに十数年の歴史を持つ要素だ。
当初はブラウザ対応にもばらつきがあったが、現在では主要ブラウザに広く実装されている。
最近では name 属性による排他的アコーディオンまで可能になり、古代魔法ながら今なお改良が続いている。 - detailsだけでアコーディオン現在の details要素 には ‘name’ 属性もある。
同じ名前のname属性を持つdetails要素であれば排他処理がなされる。<details name="magic"> summary要素炎魔法</summary> FIRE! </details> <details name="magic"> summary要素氷魔法</summary> ICE! </details> <details name="magic"> summary要素雷魔法</summary> THUNDER! </details> - details要素の排他処理デモ
要素炎魔法
FIRE!
要素氷魔法
ICE!
要素雷魔法
THUNDER! - 古代遺跡も静かに進化している同じ `name` を持つ details要素 をグループ化すると、一つを開いたとき、それまで開いていたものを閉じられる。
つまり、JavaScriptなしで排他的アコーディオンまで作れる。
昔ならクリックイベントを登録して、他の要素の状態を調べて……と書いていた処理である。
古代遺跡も静かに進化していた。
進化を続けるdetails要素。:https://labo.studio-happyvalley.com/details/mutex/ - details要素についての詳しい仕様はMDNを。








