标准答案

  1. details 表示一块可展开收起的内容,summary 是用户可点击的标题。
  2. 它适合 FAQ、说明折叠、附加信息和不复杂的详情展示。
  3. 浏览器会维护 open 属性,并提供基础键盘和屏幕阅读器语义。
  4. 手写折叠组件适合复杂动画、受控展开、多项互斥、异步内容和统一设计系统。
  5. 使用 details 时 summary 必须清楚表达展开内容,不要只写“更多”。

题目解析

这题的取舍是原生语义和定制能力。简单折叠优先考虑原生元素,复杂交互再上组件。

details 本身不是万能手风琴组件,跨项状态和动画细节需要额外处理。

代码示例

open 属性表示当前默认展开。

HTML
<details open>
  <summary>浏览器兼容说明</summary>
  <p>这里展示详细说明内容。</p>
</details>

常见误区

  • 用 div 和 click 手写简单折叠,却没有补键盘和可访问语义。
  • summary 文案太模糊,用户不知道展开后会看到什么。
  • 在需要复杂状态同步的场景里强行依赖 details,导致交互不可控。

作者信息