【ITニュース解説】Unlocking Hidden Content: An Introduction to hidden='until-found'
2025年09月10日に「Dev.to」が公開したITニュース「Unlocking Hidden Content: An Introduction to hidden='until-found'」について初心者にもわかりやすく解説しています。
ITニュース概要
`hidden='until-found'`はHTMLの新しい属性で、要素を初期は非表示にするが、ブラウザのページ内検索やリンクで発見されると表示される。これにより、初期表示を速めつつ、アコーディオンなどの隠れたコンテンツのアクセシビリティを向上させる。従来の`hidden`が検索もできないのに対し、これは非表示コンテンツを発見可能にし、特に視覚や運動に障害を持つユーザーに役立つ。
ITニュース解説
ウェブページを作成する際、すべての情報を一度に表示するのではなく、特定のコンテンツを最初は隠しておき、ユーザーが必要としたときにだけ表示したいというケースはよくある。HTMLにはこの目的のためにhiddenという属性が存在し、これを要素に追加すると、その要素の中身は完全にユーザーの視界から隠される。通常、これはCSSのdisplay: noneというスタイルが適用されるのと同等の働きをし、隠されたコンテンツは画面に表示されないだけでなく、ブラウザの「ページ内検索」機能や、特定のコンテンツへ直接リンクする「ディープリンク」機能からも存在しないものとして扱われる。つまり、完全に「見えない、見つけられない」状態になるのだ。
しかし、この完全に隠してしまう方法では、ユーザー体験やアクセシビリティの面で課題が生じることもあった。そこで新しく登場したのが、hidden="until-found"という属性値である。この属性がHTML要素に適用されると、その中身は従来のhidden属性と同様に、最初は画面に表示されない。だが、決定的な違いとして、このコンテンツはブラウザ内部では「存在する」ものとして認識され続ける。具体的には、ブラウザは通常content-visibility: hiddenというCSSプロパティを適用する。これにより、コンテンツは視覚的には隠れているにもかかわらず、ブラウザの「ページ内検索」機能や、ウェブページの特定部分へ直接アクセスする「ディープリンク」機能は、その隠れたコンテンツを問題なく発見できるようになる。
このhidden="until-found"の最も重要な機能は、ユーザーがその要素内に含まれるテキストを検索し、ブラウザがそれを見つけたときに自動的に要素を表示し、画面にスクロールしてユーザーの視界に入れることだ。この機能は、特にページの初期ロード時間を短縮する上で大きな利点をもたらす。なぜなら、すべてのコンテンツを最初から表示・描画する必要がなくなり、ユーザーが実際に必要とするまでコンテンツの描画(レンダリング)を遅らせることができるからだ。同時に、ユーザーは隠れている情報であっても検索で見つけることができるため、全体的な検索体験は非常にスムーズに保たれる。これは、アコーディオンのようにクリックで開閉するセクションや、ユーザーが後で探すかもしれないような情報を段階的に開示するような場面に理想的である。
アコーディオン、カルーセル、タブ付きインターフェースといった、ユーザーが操作することで表示内容が変わる「インタラクティブコンポーネント」では、コンテンツを一時的に隠す機能が不可欠である。これらのコンポーネントは、ウェブページに多くの利点をもたらす。例えば、すべてのコンテンツを縦に並べると、非常に長く、圧倒されるようなページになりがちだが、これらのコンポーネントを使えば、一度に表示するコンテンツ量を制限し、画面スペースを効率的に使えるようになる。また、長大なテキストや画像のかたまりは読みにくく、重要な情報が見過ごされやすいが、関連情報を折りたたみ可能なセクションにまとめることで、コンテンツに明確で論理的な構造を与え、ユーザーが探している情報を見つけやすくする。さらに、長くて静的なページは退屈で、ユーザーに精神的な負担をかけ、結果としてサイトからの離脱につながることがあるが、インタラクティブな要素や段階的な情報開示は、ページをより動的に、そして親しみやすいものにし、ユーザー体験を向上させる。
しかし、従来のコンテンツを隠す方法は、特定のユーザーグループにとって大きな課題となっていた。例えば、視覚に障害のあるユーザーは、スクリーンリーダーと呼ばれる読み上げソフトや、ブラウザの「ページ内検索」機能に大きく依存しているが、従来のhidden属性で隠されたコンテンツは、これらの機能では発見できなかった。同様に、運動機能に障害を持つユーザーも、インタラクティブコンポーネントを操作して隠されたコンテンツを表示するのに追加の困難を抱えていた。従来の隠し方では、これらのユーザーが本当に必要とする情報を見つけることが極めて困難だったのだ。つまり、インタラクティブコンポーネントは一部のユーザー体験を向上させる一方で、別のユーザーグループには障壁を築いていた。hidden="until-found"は、まさにこの矛盾を解決するために設計されたのである。隠れたコンテンツが検索可能になることで、誰もが平等に情報にアクセスできるようになる。
この新しい属性を実装する際には、いくつか開発者が知っておくべき点がある。例えば、タブコンポーネントでhidden="until-found"を使う場合、ユーザーがタブ内のコンテンツを検索すると、ブラウザはコンテンツを見つけて表示する際にbeforematchというJavaScriptイベントを発火する。しかし、タブコンポーネントでは一度に複数のタブが表示されてはいけないため、このイベントを受け取ったら、現在表示されている不要なタブを手動で隠す処理が必要になる。また、従来のhidden属性では、要素そのもののボーダーやパディングといったスタイルも完全に隠れてしまうが、hidden="until-found"を使った場合は、通常、要素の中身だけが隠され、要素自体のブロックレベルのスタイル(ボーダーやパディングなど)はそのまま表示されることがある。これは、hidden="until-found"が要素の内容を隠すことに重点を置いているためで、既存のコードベースに適用する際には注意が必要な細かな違いである。
このように、hidden="until-found"は、ウェブコンテンツのアクセシビリティとユーザー体験を同時に向上させるための強力な新しいツールだ。コンテンツを初期段階では隠しつつも、その検索可能性とディープリンク機能を維持することで、開発者はよりパフォーマンスが高く、誰もが利用しやすいインタラクティブなウェブページを構築できるようになる。これは、現代のウェブ開発において非常に重要な進歩と言えるだろう。