我对html和css很陌生。浏览过以前问过的类似问题,但没有一个解决方案似乎对我有效。基本上我有这样的情况:
Situation。
所需的效果是内容通过半透明标题可见,但标题不应与滚动条重叠。
HTML是
<body>
<div class="flex">
<nav>
</nav>
<div class="container">
<header>
</header>
<div class="content">
some random text
</div>
</div>
</div>
<footer>
</footer>
</body>
CSS是
*{
padding: 0;
margin: 0;
box-sizing: border-box;
}
.flex{
display: flex;
}
nav{
flex: 0 0 20rem;
background-color: black;
height: 90vh;
}
.container{
background-color: blue;
flex-grow: 1;
height: 90vh;
overflow-y: auto;
padding-top: 100px;
}
header{
height: 80px;
position: fixed;
top: 0;
left: 20rem;
right: 0;
z-index: 1;
background-color: rgba(0, 0, 0, 0.5);
}
.content{
height: 2000px;
color: white;
}
footer{
height: 10vh;
background-color: gray;
}
我找到的唯一解决方案是在header {right}中放入一个等于滚动条宽度的值,但这当然不是对所有浏览器都可靠,所以这只是一个技巧,而不是一个真实的的解决方案。
已尝试使用粘滞,但标题无法按预期覆盖内容。
尝试将标题直接放在内容中,但也不起作用。
2条答案
按热度按时间waxmsbnn1#
如果我没猜错的话,没有只使用CSS的解决方案。你必须添加JS。下面是代码。
CSS
JS系统
uurity8g2#
您可以在.container上添加z-index,这样它的滚动条将显示在其余元素上:
(注意:z-index也需要一个非静态位置(默认值)才能正常工作)
我设置了100,这样您还可以在中间的其他元素上添加z索引。但现在1也可以实现此效果