火次果
火次果

暂无菜单项

首页/文章/技术文章/web前端/HTML5/
打开 MD 链接

details 展开后改背景色:details[open]

发布于 1天前
3
details 展开后背景变色示意

details 与 summary 组成原生折叠面板,无需脚本即可收起展开。展开状态下修改背景色,核心钩子是属性选择器 details[open]。

📌 步骤一:写出基础结构

<details>
  <summary>点击展开</summary>
  <p>这里是正文内容。</p>
</details>

默认收起时只有 summary 可见,展开后内部节点显示。

📌 步骤二:给展开态加背景

details[open] {
  background-color: #f8f9fa;
  border-radius: 8px;
  padding: 12px;
}

details[open] 仅在展开时匹配,收起态不受影响。

📌 步骤三:只改内容区背景

details[open] > *:not(summary) {
  background-color: #e9ecef;
}

📌 步骤四:防移动端点击闪烁

部分浏览器点击 summary 会先触发焦点高亮再展开,给 summary 加 outline: none 或自定义 :focus-visible 即可。

📌 步骤五:防背景塌陷

内容含浮动或绝对定位元素时,展开瞬间背景高度计算可能滞后,给容器加 overflow: hidden 或 display: flow-root 约束格式化上下文。

收起与展开的过渡无法直接用 transition 作用于 height,需用 grid-template-rows 技巧或脚本辅助。

常见问题(FAQ)

details[open] 在收起时生效吗?
不生效,该选择器仅在 details 处于展开状态(带 open 属性)时匹配。
为什么 transition 对 details 高度无效?
原生 details 不支持 height 过渡,需用 grid-template-rows 0fr 到 1fr 技巧或脚本辅助。
能只给 summary 改背景吗?
可以,直接写 details[open] summary 即可只对标题行生效。
移动端点击闪烁怎么处理?
去掉默认 outline 或自定义 :focus-visible,避免焦点高亮与展开冲突。
背景塌陷怎么修?
给容器加 overflow: hidden 或 display: flow-root,约束格式化上下文。
details 元素details[open]HTML 状态钩子展开背景色折叠面板
支持作者
如果这篇内容对你有帮助,可以请作者喝杯咖啡
0 点赞
0 收藏
分享
0 讨论
反馈
0 / 600
细中粗
0 讨论
热门最新
总结
暂无总结
嗨,下午好!
所有的成功,都源自一个勇敢的开始
创作
社区
购物
会员
近期热门

暂无数据

火次果
火次果
首页
资迅中心
小店
AI导航
社区
所有的成功,都源自一个勇敢的开始
不辜负每一个勇敢的开始
关于FAQ协议
火次果 © 2026鲁ICP备2025164830号-1