FAQ の答えは hidden ではなく hidden="until-found" で隠す(ページ内検索とリンクで開く)
折りたたんだ答えに hidden="until-found" を付けると、見た目は隠れたまま、Cmd/Ctrl+F の検索やページ内リンク(#id)で該当箇所に来たときにブラウザが自動で表示してくれる。
どんな時に使う?
- FAQ・規約・アコーディオンなど、普段は閉じておきたいが中身は検索で見つけてほしい長文。
- 「返金ポリシーはこちら」のように、別の場所から閉じた答えへリンクしたいとき。
ふつうの hidden は display: none 相当なので、ページ内検索の対象にならず、#refunds へのリンクも何も起きない。until-found は content-visibility: hidden 相当で隠すため、中身が検索対象に残る。
コード
html
<a href="#refunds">返金ポリシー</a>
<h3>返金について</h3>
<div id="refunds" hidden="until-found">
<p>30日以内なら全額返金します。</p>
</div>js
// 任意: 開いたときに見出しの開閉アイコンなども更新したい場合
document.querySelector('#refunds')
.addEventListener('beforematch', () => { /* 開いた状態の UI に切り替える */ });検索やリンクで見つかると、ブラウザが hidden 属性を外してから beforematch イベントを発火し、その位置へスクロールする。
注意点・対応状況
- 一度開くと
hidden属性は外れたまま。もう一度閉じるボタンを付けるなら JS で属性を戻す。 - 要素に
displayを指定しているとcontent-visibility方式で隠れないことがある。隠す要素自体にはdisplayを書かない。 <details>を使うアコーディオンなら、多くのブラウザでは閉じた中身もページ内検索で自動的に開くので、こちらでも同じ目的を果たせる。高さのアニメーションは interpolate-size で details の開閉を height: auto までアニメーションさせる。- Chromium 系は対応済み。他のブラウザは Can I use で確認する。未対応だとふつうの
hiddenと同じ扱いになる。
出典
- @sanyampunia(2026-11-02)