如何使用HTML5中Details与Summary标签原生实现无需JS的折叠问答效果

星宇小哥_1812

星宇小哥_1812

2026-05-07

241人浏览

原创

原生 和 可零 javascript 实现语义化、无障碍折叠问答,支持键盘操作与屏幕阅读器;默认收起,加 open 属性可默认展开;多组独立并列;样式定制推荐用 summary::before 替换箭头;ie 不支持,需 polyfill 或降级。

如何使用html5中details与summary标签原生实现无需js的折叠问答效果

直接用 <details></details> 和 <summary></summary> 就能原生实现折叠问答,不写一行 JavaScript,语义清晰、键盘可用、屏幕阅读器友好。

基础结构:一个 FAQ 项就两层标签

每个问答项用一个 <details></details> 包裹,<summary></summary> 放问题文字,后面紧跟答案内容(任意 HTML,如 <p></p>、<ul></ul>、<div> 等): <ul> <li> <code><summary></summary> 必须是 <details></details> 的第一个子元素,否则点击无效

  • 默认收起,用户点击 <summary></summary> 文字区域(含空格、图标)即可切换展开/收起
  • 浏览器自动添加方向箭头,支持键盘 Enter / Space 触发,无需额外 ARIA 属性
  • 默认展开与多组并列写法

    让某条问答默认打开,只需给 <details></details> 加 open 属性:

    js2java
    js2java

    JavaScript 到 Java 全栈翻译助手,专为前端开发者学习 Java 或快速实现后端业务逻辑而设计。当用户提到以下场景时必须使用此技能: - "帮我把这段 JS 代码转成 Java" - "用 Java 怎么写这个逻辑" - "我习惯用 JS 写,想翻译成 Java" - "教我 Java,我要写后端接...

    下载
    • <details open><summary>常见问题</summary><p>答案内容</p></details>
    • 多个 FAQ 并列时,各自独立,互不影响;每组都用单独的 <details></details>,不要嵌套
    • 避免在 <summary></summary> 内放 <button></button>、<input> 等可聚焦元素,以防打断原生行为

    简单样式定制:隐藏原生箭头 + 添加图标

    浏览器对 ::marker 支持不一(Safari 尤其弱),推荐统一用 ::before 控制图标:

    • 先清除默认箭头:summary { list-style: none; }
    • 加自定义符号:summary::before { content: "▶"; margin-right: 6px; }
    • 展开时旋转:details[open] > summary::before { content: "▼"; }
    • 可配合 transition: transform 0.2s 实现平滑转动(仅限旋转,高度过渡仍需 JS)

    无障碍与兼容性注意点

    原生标签已自带良好可访问性,但定制时需守住底线:

    • 别用 display: none 或 visibility: hidden 隐藏 <summary></summary>,它必须始终可见且可聚焦
    • IE 完全不支持,如需兼容,得引入 polyfill(如 details-polyfill)或降级为 JS 方案
    • 主流浏览器(Chrome 12+、Firefox 49+、Edge 79+、Safari 6+)均支持,无需担心现代项目

    前端入门到VUE实战笔记:立即使用
    在学习笔记中,你将探索 前端 的入门与实战技巧!

    相关文章

    HTML速学教程(入门课程)
    HTML速学教程(入门课程)

    HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    html js html5

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    python是前端还是后端
    python是前端还是后端

    Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.11

    2443

    5

    前端如何实现即时通讯
    前端如何实现即时通讯

    实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

    2023.10.09

    5243

    6

    前端和后端的区别
    前端和后端的区别

    前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

    2024.03.19

    6310

    13

    php和前端的关联介绍
    php和前端的关联介绍

    php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

    2024.03.22

    5878

    10

    前端外包工作内容有哪些
    前端外包工作内容有哪些

    前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

    2024.05.22

    843

    5

    html版权符号
    html版权符号

    html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    2023.06.14

    5995

    7

    html在线编辑器
    html在线编辑器

    html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

    2023.06.21

    3372

    4

    html网页制作
    html网页制作

    html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

    2023.07.31

    3050

    5

    html空格
    html空格

    html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.01

    3079

    5

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    GDB 17.2 官方文档集合
    GDB 17.2 官方文档集合

    共0课时 | 0人学习

    Bootstrap 入门安装配置
    Bootstrap 入门安装配置

    共0课时 | 0人学习

    38+ PhpStorm 提示和技巧
    38+ PhpStorm 提示和技巧

    共1课时 | 224人学习