css - Z-index 不适用于绝对定位元素(尽管移除了不透明度等)
问题描述
在与一个不会出现在桌面断点页面内容上方的绝对定位子菜单作斗争之后阅读了这篇文章,我删除了文章中确定的所有有问题的 CSS,但无济于事。尽管应用了 z-index 的绝对位置,以下 HTML 中的子菜单不会出现在页面内容上方。任何对此问题有进一步想法的人,请告诉我——我很困惑。
<nav id="nav-main" role="navigation">
<ul class="site-nav site-nav__main">
<li class="nav__menuitem nav__menuitem--main first level1"><a class="nav__menulink nav__menulink--main transition" href="my-link">my-link</a></li>
<li id="subNav__parent" class="nav__menuitem nav__menuitem--parent transition clearfix level1">SubNav Toggle Label<span class="subNav__toggle">+</span>
<ul class="subNav">
<li class="nav__menuitem nav__menuitem--subnav first level2">
<a class="nav__menulink nav__menulink--main transition" href="my-link2">my-link2</a>
</li>
<li class="nav__menuitem nav__menuitem--subnav last level2">
<a class="nav__menulink nav__menulink--main transition" href="my-link3">my-link3</a>
</li>
</ul>
</li>
</ul>
</nav>
.site-nav {
margin: 0;
padding-left: 1rem;
padding-right: 1rem;
list-style-type: none;
transition: .2s ease-out; /*related to a different transition; not relevant to the issue being
posted about*/
transform: translateY(0%);
}
// SUBNAV
.nav__menuitem--parent { /*this is the click element used to open / close the sub-menu
position: relative;
cursor: pointer;
}
.subNav {
position: absolute;
z-index: 10;
margin: 1rem auto 0 auto;
padding: 1rem 0;
width: 250px;
visibility: 0;
}
.subNav.open {
transition-property: visibility, max-height;
transition-duration: .5s;
transition-timing-function: ease-out;
max-height: 500px; /* approximate max height */
visibility: 0;
}
解决方案
指定位置时:绝对;该项目将相对于其父项定位。您需要指定 top:0 或类似内容来覆盖它。
这是一个快速的小提琴来说明
.parent-nav {
background-color:red;
position:absolute;
top:0;
width:100%;
}
.sub-nav-parent {
background-color:blue;
position:relative;
}
/* 10px below sub nav parent */
.sub-nav-child {
background-color:cyan;
position:absolute;
top:10;
left:0;
z-index:99;
width:100%;
}
<div class="page-content">
<h1>
This is my page content
</h1>
<p>Page body page body</p>
<p>Page body page body</p>
<p>Page body page body</p>
<p>Page body page body</p>
<p>Page body page body</p>
<p>Page body page body</p>
<p>Page body page body</p>
<p>Page body page body</p>
<p>Page body page body</p>
<p>Page body page body</p>
<p>Page body page body</p>
<p>Page body page body</p>
</div>
<div class="parent-nav">
<ul class="sub-nav-parent">
<li>Sub Nav Parent</li>
<li>
<ul class="sub-nav-child">
<li>Child 1</li>
<li>Child 2</li>
</ul>
</li>
</ul>
</div>
推荐阅读
- bash - 将文件从服务器上传到工件
- node.js - 如何使用 Puppeteer 将(长)文本从剪贴板粘贴到 Textarea
- cmake - 将一个项目链接到另一个 CMAKE
- javascript - node-sass fstream 和 tar 依赖漏洞
- xpath - 通过使用 XPath 创建的响应进行解析
- reactjs - 如何将变量传递给子类并在 React 中更改它?
- spring-mvc - 如何将bean的属性值设置为从另一个类的方法返回的值?
- javascript - 如何创建 div 以在单击时向左/向右更改幻灯片图像?
- c# - 有没有办法让我使用文件处理“动态”更改数据集的“数据源”?
- python-3.x - Pandas:如何根据其他 2 列的增量和连续属性来增加新列?