标签关闭时其内部元素仍保持可见
" />
CSS 无法绕过 的原生显示逻辑,但可通过 JavaScript 克隆目标元素并移出 DOM 来实现“视觉上始终可见”的效果,无需修改原始 HTML 结构语义。
css 无法绕过 `
后的子元素)在 open 属性为 false 时,浏览器会强制隐藏——这不是通过 display: none 或 visibility: hidden 实现的,而是由用户代理样式表深度控制的渲染行为。因此,任何仅依赖 CSS 的尝试(如设置 visibility: visible、display: block、position: absolute 或强行撑高容器)均无效。
✅ 正确解法是:将需常显的元素从
以下是一个轻量、无依赖的实现示例:
<details><summary>Category</summary><p>A paragraph</p> <p class="always-visible">Another paragraph</p> </details>
/* 隐藏原始副本,确保仅克隆体显示 */
.always-visible {
display: none;
}
document.addEventListener('DOMContentLoaded', () => {
const details = document.querySelector('details');
const target = details.querySelector('.always-visible');
if (target) {
const clone = target.cloneNode(true);
clone.classList.remove('always-visible'); // 可选:清理类名以避免样式冲突
details.after(clone);
}
});
⚠️ 注意事项:
- 克隆后的元素脱离 上下文,不再受 open 状态影响,但也不再响应的 toggle 事件(如需动态同步,可监听 toggle 事件并更新克隆体);
- 若页面含多个 ,应使用 querySelectorAll 并遍历处理;
- 克隆节点不继承原始事件监听器(如内联 onclick),如有交互逻辑,需重新绑定或使用事件委托;
- 为保障可访问性,切勿移除或隐藏原始 内容——克隆仅为视觉增强,语义结构必须完整保留。
总结:这不是 CSS 局限,而是











