<div class="c-container">
<header class="c-header">
<h1 class="c-header_heading">Shadow on Scroll</h1>
</header>
<div class="c-scrollbox">
<p>Maecenas faucibus mollis interdum. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ullamcorper nulla non metus auctor fringilla. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Cras justo odio, dapibus ac facilisis in, egestas eget quam.</p>
<p>Donec id elit non mi porta gravida at eget metus. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
<p>Vestibulum id ligula porta felis euismod semper. Nullam quis risus eget urna mollis ornare vel eu leo. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nullam quis risus eget urna mollis ornare vel eu leo. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
<p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Donec id elit non mi porta gravida at eget metus. Nulla vitae elit libero, a pharetra augue. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Cras justo odio, dapibus ac facilisis in, egestas eget quam.</p>
</div>
</div>
5条答案
按热度按时间qqrboqgw1#
我想你在找这样的东西
参考:LINK
xeufq47z2#
我很抱歉在这里回答我自己的问题,但经过一些谷歌搜索,我发现了一个很好的CSS唯一的解决方案,在macOS上的 chrome 工程。
@Hash提供了一个来自lea verou博客的解决方案,她的解决方案使用
background-attachment: local
来达到这个效果,但是目前在macOS?上的chrome 59中这个解决方案被破坏了。它在2012年起作用了,但在2017年对我来说没有,至少现在是这样
它现在在2020年有效,所以你可以看接受的答案,而不是这个。♀🤷♀️
尽管如此,她的解决方案是伟大的和you should read more about it here。
在她的文章(2012年)中,她提到了一个更老但更兼容的解决方案,该解决方案使用pseudoelements. This blog post is by Roman Komarov and here are some direct quotes from his article。
这里有一个老的想法,但recreated与纯CSS.
最初,我有一个额外的 Package 和两个额外的伪元素,后来我决定重写代码,只使用一个元素(通过使用ra dial gra di ents)。
虽然这种方法很简单,但也有一些限制:
但在大多数情况下,这种方法是相当bulletproof。
如果你用简单的图片替换CSS图形,这个方法可以在IE中工作。(它可能需要一些小的修正;我没有检查。)
下面是直接从他的博客中复制的一些代码:
cxfofazt3#
这是我整理的一个纯CSS解决方案,它将阴影放在内容上而不是后面。
wqlqzqxt4#
如果您的用例允许将阴影放置在内容的后面,作为元素背景的一部分,那么公认答案中的纯CSS解决方案效果很好。
如果您的用例要求阴影位于内容之上,或者独立于元素的背景,那么您可能需要使用一些JavaScript。我满足了这些要求,并构建了一个定制元素,其工作方式与OP要求的完全相同:
<scroll-shadow>
element.用法示例(垂直和水平工作,see demo here):
OP要求一个只使用CSS的解决方案,但这不是。尽管如此,它利用了CSS,应该不会对性能产生负面影响。将此作为答案发布,因为从其他评论来看,似乎普遍需要在内容上方使用阴影。
os8fio9y5#
我能够把一个工作的CSS的唯一解决方案与阴影以上的内容使用粘性(和父div,也有一些间距内的滚动内容):
演示:https://jsfiddle.net/y79avtek/