details要素でスライドダウンのアコーディオンをシンプルに実装したい

FAQなどで開閉ボタンを実装したいことがあると思います。detailsやsummaryでの実装を考えましたが、よくあるスライドダウンがうまく動きませんでした。そこで調べてみたところ、CSSだけで下記のコードで実装することができました。

HTML

<details>
  <summary>Q. 質問</summary>
  A. 回答
</details>
<details>
  <summary>Q. 質問</summary>
  A. 回答
</details>

CSS

details {
  interpolate-size: allow-keywords;
  overflow: hidden;
}
details::details-content {
  block-size: 0;
  transition: block-size 0.5s, content-visibility 0.5s;
  transition-behavior: allow-discrete;
}
details:open::details-content {
  block-size: auto;
}

デモ

スムーズな開閉をするにはどうしたらいいですか?
最新のCSSを使って開閉のアニメーションを実装することができます。
なぜこれまでのmax-heightなどを使った方法ではだめなのですか?
ブラウザ側でCSSが適用されているため、あとから指定してもうまくいかないのだと思います。

参考

こちらの動画を参考にさせていただきました。ありがとうございました!



コメント

お名前 必須

名前を入力してください。

メールアドレス

正しいメールアドレスを入力してください。

URL

正しいURLを入力してください。

タイトル

タイトルを入力してください。

タイトルに不適切な言葉が含まれています。

コメント必須

コメントを入力してください。

コメントに不適切な言葉が含まれています

パスワード必須

パスワードを入力してください。

パスワードは半角小文字英数字で入力してください。

Cookie

関連記事

この記事のハッシュタグに関連する記事が見つかりませんでした。