标签关闭时仍显示其内部特定元素
" />
本文介绍一种通过 JavaScript 克隆 DOM 节点并移出 容器的方式,实现“在 折叠状态下仍可见其内部某子元素”的效果;纯 CSS 无法绕过浏览器对 内容的渲染限制。
本文介绍一种通过 javascript 克隆 dom 节点并移出 `
的内容(即 details > *:not(summary))在 open 属性为 false 时,会被浏览器强制隐藏(相当于 display: none)且无法通过常规 CSS 覆盖。这是由规范定义的渲染行为,visibility: visible、position: absolute、transform 或 z-index 等样式均无效——因为该内容根本未参与布局流程。
因此,若需在 ),必须借助 JavaScript 修改 DOM 结构。核心思路是:将目标元素克隆一份,并将其插入到 以下为推荐实现方案: ✅ 优势:无需修改原有 HTML 结构语义,仅通过脚本动态调整;克隆节点保留所有内联样式、事件监听器(若使用 cloneNode(true))及文本内容。 总结:纯 CSS 无法突破 <details><summary>Category</summary><p>A paragraph</p>
<p class="persistent">Another paragraph</p>
</details>
.persistent {
display: none; /* 隐藏原始副本 */
}
document.addEventListener('DOMContentLoaded', () => {
const details = document.querySelector('details');
const target = details.querySelector('.persistent');
if (target) {
const clone = target.cloneNode(true);
// 移除可能影响样式的类(可选)
clone.classList.remove('persistent');
details.after(clone);
}
});
⚠️ 注意事项:
仍可键盘聚焦、屏幕阅读器正确播报)。











