优先选用 <details> 而非手写 JS 或冗余 <div>+CSS,因其原生支持 open 状态管理、键盘交互(空格/回车)、焦点流、屏幕阅读器播报及 SEO 友好;标准结构为每个 FAQ 用 <section> 包裹 <details>,内含 <summary> 和内容,禁用 overflow: hidden、height: 0 及 tabindex="-1" 以保障可访问性与动画。

` 布局帮助中心页面,核心是**语义清晰、交互自然、无障碍友好**。它比手写 JS 折叠更轻量,也比一堆 `` + CSS 更符合 HTML5 标准。
为什么优先选 `` 而不是自己写展开逻辑
原生 `` 自带 `open` 状态管理,浏览器自动处理键盘(空格/回车)切换、焦点流和屏幕阅读器播报。不用额外 JS 就能支持:
- 点击标题展开/收起
- Tab 键顺序聚焦到每个 `
`
- 辅助技术可识别“该区域可展开”,并读出当前状态(如“登录失败怎么办?已关闭”)
- SEO 友好——所有内容在 HTML 源码中可见,搜索引擎能索引全部问答
标准结构写法(零 JS,推荐)
每个 FAQ 条目用一个 `` 包裹,id 用于锚点跳转;内部用 `` 控制显隐:
<section id="faq-login-failed">
<details>
<summary>登录失败怎么办?</summary>
<p>请检查密码是否输入正确,或尝试重置密码。</p>
</details>
</section>
注意:不要给 `` 设 `overflow: hidden` 或 `height: 0`,这会破坏原生动画和可访问性;也不要给 `` 加 `tabindex="-1"`,否则键盘用户无法操作。
样式微调要点(保持功能不破)
可以用 CSS 控制外观,但需保留原生行为:
立即学习“前端免费学习笔记(深入)”;
- 用 `summary::marker` 改箭头图标(比如换成加减号),别用 `background-image` 覆盖整个 summary
- 给 `details[open] summary` 加底色或下划线,视觉提示已展开
- `.details p` 设置合适的上下边距,避免文字贴边
- iOS Safari 卡顿?检查是否误加了 `transform` 或 `will-change` 到 `` 上
配合页面整体结构更实用
帮助中心首页可按主题分组,每组用 `` 隔开,并加小标题:
<h2>账户相关</h2>
<section id="faq-login-failed">…</section>
<section id="faq-password-reset">…</section>
<h2>订单与支付</h2>
<section id="faq-refund-policy">…</section>
再配个顶部导航栏,链接直接指向 `#faq-login-failed` 这类 id,用户点击就能跳转并自动展开对应条目。
为什么优先选 `` 而不是自己写展开逻辑
原生 `
- 点击标题展开/收起
- Tab 键顺序聚焦到每个 `
`
- 辅助技术可识别“该区域可展开”,并读出当前状态(如“登录失败怎么办?已关闭”)
- SEO 友好——所有内容在 HTML 源码中可见,搜索引擎能索引全部问答
标准结构写法(零 JS,推荐)
每个 FAQ 条目用一个 `
<section id="faq-login-failed">
<details>
<summary>登录失败怎么办?</summary>
<p>请检查密码是否输入正确,或尝试重置密码。</p>
</details>
</section>
注意:不要给 `` 加 `tabindex="-1"`,否则键盘用户无法操作。
样式微调要点(保持功能不破)
可以用 CSS 控制外观,但需保留原生行为:
立即学习“前端免费学习笔记(深入)”;
- 用 `summary::marker` 改箭头图标(比如换成加减号),别用 `background-image` 覆盖整个 summary
- 给 `details[open] summary` 加底色或下划线,视觉提示已展开
- `.details p` 设置合适的上下边距,避免文字贴边
- iOS Safari 卡顿?检查是否误加了 `transform` 或 `will-change` 到 `` 上
配合页面整体结构更实用
帮助中心首页可按主题分组,每组用 `
<h2>账户相关</h2> <section id="faq-login-failed">…</section> <section id="faq-password-reset">…</section> <h2>订单与支付</h2> <section id="faq-refund-policy">…</section>
再配个顶部导航栏,链接直接指向 `#faq-login-failed` 这类 id,用户点击就能跳转并自动展开对应条目。



















