讲师中心 微信公众号

工具推荐

视频效率加速
剧云
剧云

中文短剧剧本制作平台

立刻MV
立刻MV

低成本歌曲 MV、视频生成

Seko
Seko

AI短剧一键生成成片

updream

一键生成高质量推广成片

HTML5summary标签和details怎么配合_摘要显示技巧【指南】

落明大大_7617

落明大大_7617

发布时间:2026-01-01 15:28:02

|

269人浏览过

|

来源于php中文网

原创

标签中必须是其第一个直接子元素,否则无法触发展开收起;应使用toggle事件监听状态变化,而非click;默认展开用open属性,样式定制需注意浏览器兼容性。

html5summary标签和details怎么配合_摘要显示技巧【指南】

details 标签必须包裹 summary 才能展开收起

单独写 <summary></summary> 不会生效,它只是 <details></details> 的第一个子元素,且浏览器只识别其作为触发器。如果 <summary></summary> 前面有其他内容(比如空格、换行或文本节点),<details></details> 会忽略它,导致点击无反应或控制逻辑错乱。

  • ✅ 正确结构:
    <details>
      <summary>点击展开</summary>
      <p>这里是隐藏内容</p>
    </details>
  • ❌ 错误写法:
    <details>
      <p>一段说明</p>
      <summary>点击展开</summary>
      <p>隐藏内容</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p><div class="aritcle_card flexRow">
                                                            <div class="artcardd flexRow">
                                                                    <a class="aritcle_card_img" href="/xiazai/skill11499" title="cn-json-diff"><img
                                                                                    src="https://img.php.cn/upload/skill/001/246/273/6adaf20cf0281539.jpg" alt="cn-json-diff" ></a>
                                                                    <div class="aritcle_card_info flexColumn">
                                                                            <a href="/xiazai/skill11499" title="cn-json-diff">cn-json-diff</a>
                                                                            <p>比较两个 JSON 文件并显示差异。支持嵌套结构、数组及值变更。纯 Python 标准库实现,无需 API 密钥。</p>
                                                                    </div>
                                                                    <a href="/xiazai/skill11499" title="cn-json-diff" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
                                                            </div>
                                                    </div>
    </details>
    (此时 <summary></summary> 不被识别为控制节点)
  • ⚠️ 注意:Chrome/Firefox/Safari 都要求 <summary></summary> 是 <details></details> 的**直接子元素**且**排第一**;哪怕加个 <!-- 注释 --> 在它前面也会失效

summary 默认带箭头,但不能用 CSS 伪元素覆盖所有场景

浏览器对 <summary></summary> 内置了 ::marker(显示折叠/展开箭头),但它的渲染行为不统一:Firefox 支持 list-style: none 和 ::marker 控制,Chrome 目前仅部分支持 ::marker,Safari 则基本忽略样式修改。强行用 text-indent 或 padding-left 掩盖箭头容易导致点击热区偏移。

  • 稳妥做法是用 display: flex + justify-content: space-between 把文字和自定义图标分开布局
  • 若需完全隐藏原生箭头,推荐:
    summary {
      list-style: none;
    }
    summary::marker {
      content: "";
    }
    (注意 Safari 16.4+ 才支持 ::marker,旧版需 JS 检测降级)
  • 图标建议用 SVG 内联或 background-image,避免字体图标在缩放时模糊或错位

details 元素默认 open 状态与 JS 控制的兼容性问题

open 属性是布尔属性,写上即生效(如 <details open></details>),但它和 JS 的 details.open = true/false 并非完全同步——比如通过 JS 设置后,再手动点击 summary,某些版本 Safari 会重置状态异常;另外,服务端渲染时若初始设 open,但 JS 后续又调用 details.toggle(),可能触发两次事件。

  • 监听状态变化请用 toggle 事件(不是 click):
    details.addEventListener('toggle', () => {
      console.log('当前状态:', details.open);
    });
  • 避免混用 HTML 属性和 JS 赋值:要么全靠属性控制(适合静态内容),要么全由 JS 管理(适合动态交互)
  • 需要“默认展开但可关闭”时,用 <details open></details> 即可;需要“默认关闭但首次加载后自动展开”,请在 DOMContentLoaded 后执行 details.open = true,并确保没重复触发

无障碍访问(a11y)必须保留 summary 的语义和键盘支持

<summary></summary> 天然支持键盘操作(空格/回车触发展开),但若用 div + JS 模拟,就得手动补 role="button"、tabindex="0"、aria-expanded 等,成本高且易出错。原生 <details>/<summary></summary></details> 是 WAI-ARIA 推荐的轻量级折叠组件,屏幕阅读器能正确播报状态变化。

  • 不要给 <summary></summary> 加 onclick 或 addEventListener('click') —— 它已有完整交互逻辑
  • summary 文本需准确描述内容类型,例如“配置选项(3 项)”比“点我”更利于理解
  • 若内部含表单控件(如 <input>),确保 details 展开后再聚焦,否则 Chrome 可能跳过未渲染的控件

细节在于 <summary></summary> 必须是 <details></details> 的第一个子节点,以及 toggle 事件才是状态变更的唯一可信信源。其他所有样式或 JS 干预,都该以不破坏这个前提为底线。

相关文章

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

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

下载

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

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

相关专题

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

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

2946

2023.08.11

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

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

6119

2023.11.06

Chrome开启无痕模式
Chrome开启无痕模式

本专题整合了Chrome无痕模式开启相关内容,阅读专题下面的文章了解更多详细教程。

4367

2026.03.24

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

4916

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1435

2023.07.28

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

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

1918

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

10463

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

1040

2023.09.01

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

60

2026.11.06

热门下载

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

精品课程

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn