我有一个标头标记,将其设置为固定属性。在该标头标签内,我有一个导航标签,该标签设置为绝对位置。我遇到的问题是我似乎无法将header标记放在nav标记的前面。即使将header标签的z-index设置为1000,将nav标签的z-index设置为500,我也可以这样做吗?
<header> <-- fixed position
<section> logo here </section>
<nav data-nav="main-navigation"> <-- absolute position
<ul>
<li><a href="#" id="selected">HOME <div></div></a></li>
<li><a href="#">ABOUT US</a></li>
<li><a href="#">SERVICES</a></li>
<li><a href="#">GALLERIES</a></li>
<li><a href="#">BLOG</a></li>
<li><a href="#">CONTACT US</a></li>
</ul>
</nav>
</header>
这是一支电子笔,可以显示我要做什么
答案 0 :(得分:2)
使用position: fixed
,子元素不能坐在其父元素后面。诀窍是在父级上使用伪元素,它将充当子级的同胞。
根据您的描述,文本将显示在标题颜色的后面。
header{
position: fixed;
width: 100%;
height: 100px;
}
header::before {
content: '';
position: absolute;
height: 100%;
z-index: 100;
width: 100%;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: red;
}
header nav{
position: fixed;
background-color: blue;
width: 50%;
height: 50vh;
top:0;
}
header ul{
list-style:none;
}
header a{
color: #fff;
}
<header>
<h1>HELLO</h1>
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
如果您希望文本显示在红色上方,则需要在nav
上使用伪元素。如果您不需要position: fixed
,则可以在父级上使用其他任何定位,在子级上使用负数z-index
:
header{
position: absolute;
width: 100%;
background-color: red;
height: 100px;
}
header nav{
position: absolute;
background-color: blue;
width: 50%;
height: 50vh;
top:0;
z-index: -1;
}
header ul{
list-style:none;
}
header a{
color: #fff;
}
<header>
<h1>HELLO</h1>
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
答案 1 :(得分:0)