0

0

HTML如何定义文档的细节展示区域_HTML定义文档细节展示区域标签【标签】

看不見的法師

看不見的法師

发布时间:2026-03-06 20:38:03

|

606人浏览过

|

来源于php中文网

原创

原生标签配合可实现无js折叠功能,须为首个子元素且仅一个;默认关闭,加open属性可默认展开;兼容现代浏览器但不支持ie;css可通过重置list-style和display控制样式;语义化强,利于无障碍访问。

html如何定义文档的细节展示区域_html定义文档细节展示区域标签【标签】

<details></details><summary></summary> 实现可折叠内容

HTML 原生支持细节展示区域,不需要 JS 就能实现点击展开/收起。核心就是一对配合使用的标签:<details></details> 是容器,<summary></summary> 是标题栏(且必须是它的第一个子元素)。

常见错误是把 <summary></summary> 写在 <details></details> 外面,或者加了多个 <summary></summary> —— 浏览器只识别第一个,其余被忽略。

  • <details></details> 默认是关闭状态;加 open 属性可默认展开:<details open></details>
  • <summary></summary> 里可以放文字、图标甚至 <span></span>,但别嵌套交互元素(如按钮、链接)再加 onclick,会和原生展开逻辑冲突
  • 不支持 IE,Edge 79+、Chrome 12+、Firefox 49+、Safari 6.2+ 可用;旧版本需降级为 JS 模拟

样式控制:怎么让 <summary></summary> 看起来不像默认的三角箭头

浏览器对 <summary></summary> 有内置样式(比如左侧小三角),但可通过 CSS 覆盖。关键是重置 list-style 并处理伪元素。

容易踩的坑是直接写 summary { background: #eee; } 却发现没生效 —— 因为部分浏览器(如 Safari)对 <summary></summary> 应用了 display: list-item,需要显式设为 display: block 才能稳定控制。

超级简历WonderCV
超级简历WonderCV

免费求职简历模版下载制作,应届生职场人必备简历制作神器

下载

立即学习前端免费学习笔记(深入)”;

  • 隐藏默认箭头:summary { list-style: none; }summary::marker { content: ""; }
  • 自定义展开/收起图标:用 <details></details>open 属性配合属性选择器,例如 details[open] summary::after { content: "▼"; }
  • 注意:不要给 <summary></summary>pointer-events: none,否则点不动

无障碍与语义:为什么不能用 <div> + JS 模拟 <p><code><details></details> 是 ARIA 推荐的语义化方案,屏幕阅读器能自动识别其展开状态、角色(role="group")和操作方式(“按空格或回车展开”)。换成 <div> 后,必须手动加 <code>aria-expandedaria-controls、键盘事件监听(空格/回车/方向键),漏一点就影响可用性。

使用场景很明确:FAQ、技术文档中的配置项说明、表单里的高级选项——只要内容属于“非必需即时可见”,就优先用原生标签。

  • JS 不该用来“实现功能”,而该用来“增强行为”,比如添加平滑滚动或动画
  • 如果服务端渲染时要默认展开某一项,直接输出 <details open></details> 即可,别等 JS 加载完再操作 DOM
  • 避免在 <details></details> 内部放 <form></form><iframe></iframe>,某些老浏览器可能触发意外重绘或焦点丢失

兼容性兜底:当必须支持 IE 时怎么办

IE 完全不识别 <details></details>,会把它当普通 <div> 渲染,内容始终可见,且无交互。这时候不能靠 CSS hack,得用 JS 补齐行为。 <p>重点不是重写整个组件,而是最小化干预:只在 IE 下启用 JS 控制,其他浏览器保持原生逻辑。这样既保语义,又不增加现代浏览器负担。</p> <ul> <li>检测方式别用 UA 字符串,用特性检测:<code>if (!('open' in document.createElement('details')))

  • 只需监听 <summary></summary> 的 click,然后 toggle <details></details>open 属性,并同步更新 aria-expanded
  • 别绑定全局事件代理,每个 <details></details> 单独初始化,避免动态插入内容后失效
  • 细节区域的复杂点不在结构,而在状态同步和焦点管理——尤其是嵌套 <details></details> 或内部有表单控件时,open 切换后焦点是否回到 <summary></summary>、键盘导航是否连贯,这些才是真实项目里容易被跳过的环节。

    相关文章

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

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

    下载

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

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    通义千问
    通义千问

    阿里巴巴推出的全能AI助手

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    chrome什么意思
    chrome什么意思

    chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

    1036

    2023.08.11

    chrome无法加载插件怎么办
    chrome无法加载插件怎么办

    chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

    826

    2023.11.06

    edge是什么浏览器
    edge是什么浏览器

    Edge是一款由Microsoft开发的网页浏览器,是Windows 10操作系统中默认的浏览器,其目标是提供更快、更安全、更现代化的浏览器体验。本专题为大家提供edge浏览器相关的文章、下载、课程内容,供大家免费下载体验。

    1700

    2023.08.21

    IE浏览器自动跳转EDGE如何恢复
    IE浏览器自动跳转EDGE如何恢复

    ie浏览器自动跳转edge的解决办法:1、更改默认浏览器设置;2、阻止edge浏览器的自动跳转;3、更改超链接的默认打开方式;4、禁用“快速网页查看器”;5、卸载edge浏览器;6、检查第三方插件或应用程序等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

    396

    2024.03.05

    如何解决Edge打开但没有标题的问题
    如何解决Edge打开但没有标题的问题

    若 Microsoft Edge 浏览器打开后无标题(窗口空白或标题栏缺失),可尝试以下方法解决: 重启 Edge:关闭所有窗口,重新启动浏览器。 重置窗口布局:右击任务栏 Edge 图标 → 选择「最大化」或「还原」。 禁用扩展:进入 edge://extensions 临时关闭插件测试。 重置浏览器设置:前往 edge://settings/reset 恢复默认配置。 更新或重装 Edge:检查最新版本,或通过控制面板修复

    1026

    2025.04.24

    if什么意思
    if什么意思

    if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

    844

    2023.08.22

    js 字符串转数组
    js 字符串转数组

    js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

    718

    2023.08.03

    js截取字符串的方法
    js截取字符串的方法

    js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

    219

    2023.09.04

    JavaScript浏览器渲染机制与前端性能优化实践
    JavaScript浏览器渲染机制与前端性能优化实践

    本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

    1

    2026.03.06

    热门下载

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

    相关下载

    更多

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Bootstrap 5教程
    Bootstrap 5教程

    共46课时 | 3.5万人学习

    AngularJS教程
    AngularJS教程

    共24课时 | 4万人学习

    CSS教程
    CSS教程

    共754课时 | 40万人学习

    最新文章

    更多
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号