【发布时间】:2019-01-14 05:34:37
【问题描述】:
我的 Web 应用程序中有一个可滚动的 div,我想在 div 的视口的顶部和底部提供固定的渐变阴影(固定在外部视图上,而不是在实际的可滚动视图内)。棘手的部分是我想显示阴影,只要它们各自的可滚动端还没有被击中;也就是说,只有当滚动条不在顶部时才显示顶部阴影,底部也一样。
我希望这能直观地表明,例如div 中的列表仍沿任一方向继续。我已经检查了不同的问题,这些问题试图实现类似但不是我需要的东西。我已经找到了如何通过 CSS 背景属性放置阴影,但很难将它们正确对齐到 div,并且仍然不知道是否有一种优雅的方式来隐藏它们以达到我的目的。如有必要,我可以使用 Javascript 来解决这个问题,但我想避免这种情况。
下面发布的代码被简化了,因为我的实际代码太冗长了。
<html>
<head>
<style>
#flex {
display: flex;
flex-direction: column;
overflow-y: auto;
height: 100%;
}
#head {
border: 1px solid red;
height: 200px;
}
#content {
overflow-y: scroll;
flex: 1 1 auto;
min-height: 0;
border: 1px solid black;
position: relative;
}
#content:before {
content: '';
position: fixed;
min-height: 5px;
width: 100%;
margin: 0 auto;
background: linear-gradient(to bottom, rgba(32,32,32,1), rgba(32,32,32,0)) no-repeat top;
background-size: 100% 5px;
}
#content:after {
content: '';
position: fixed;
min-height: 5px;
width: 100%;
margin: 0 auto;
background: linear-gradient(to top, rgba(32,32,32,1), rgba(32,32,32,0)) no-repeat bottom;
background-size: 100% 5px;
}
</style>
</head>
<body>
<div id="flex">
<div id="head"></div>
<div id="content">
<pre>
Lorem ipsum dolor sit amet, consectetur adipiscing.
Cras neque malesuada libero habitant, primis tortor platea.
Lorem ipsum dolor sit amet, consectetur adipiscing.
Cras neque malesuada libero habitant, primis tortor platea.
Lorem ipsum dolor sit amet, consectetur adipiscing.
Cras neque malesuada libero habitant, primis tortor platea.
Lorem ipsum dolor sit amet, consectetur adipiscing.
Cras neque malesuada libero habitant, primis tortor platea.
Lorem ipsum dolor sit amet, consectetur adipiscing.
Cras neque malesuada libero habitant, primis tortor platea.
Lorem ipsum dolor sit amet, consectetur adipiscing.
Cras neque malesuada libero habitant, primis tortor platea.
Lorem ipsum dolor sit amet, consectetur adipiscing.
Cras neque malesuada libero habitant, primis tortor platea.
Lorem ipsum dolor sit amet, consectetur adipiscing.
Cras neque malesuada libero habitant, primis tortor platea.
Lorem ipsum dolor sit amet, consectetur adipiscing.
Cras neque malesuada libero habitant, primis tortor platea.
Lorem ipsum dolor sit amet, consectetur adipiscing.
Cras neque malesuada libero habitant, primis tortor platea.
</pre>
</div>
</div>
</body>
</html>
目前的外观:
它应该是什么样子:
仅滚动条顶部 - 底部阴影
中间的滚动条 - 两个阴影
滚动条底部 - 仅顶部阴影
【问题讨论】: