CSS定位:绝对定位的子元素相对于body的偏移
<body>
<main class="container">
<nav>
<ul>
<li><strong>Dropdown Demo</strong></li>
</ul>
<ul>
<li>
<details class="dropdown">
<summary>Account</summary>
<ul dir="rtl">
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
</details>
</li>
</ul>
</nav>
</main>
</body>
这个怪异之处在于下拉导航项中那个嵌套的 <ul>。
其中的 <details> 被定位在 relative,而 <ul> 被定位在 absolute。
如预期,我查看 <ul> 时,其偏移父元素是 <details>。
不过,当我点击下拉以打开它时,偏移父元素突然变成 <body>。
我觉得这可能是因为当 <details> 应用了 open 属性时所应用的某个样式所导致的,但我还没能准确找出究竟是哪一个原因造成的。
为什么偏移父元素会改变?有哪些样式会让处于 relative 父级中的 absolute 子项发生这种情况?
解决方案
仅在Firefox中能重现,Chromium没有显示任何视觉异常。
不确定确切原因,但 nav details.dropdown 通过Pico CSS应用了 display: inline。如果我把它改成 display: inline-block,下拉菜单的行为就会如预期。
(这也会略微改变那个空洞的 nav 元素的高度,当在 details 元素上应用 inline-block 时,它会变得稍微小一些。可能需要通过增加额外的外边距,或调整行高来抵消。)
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。