css底部阴影-使用纯CSS的滚动阴影效果

2023-08-26 0 7,526 百度已收录

失踪的人回来了,终于想起来我还有公众号。 新的一年,我给自己立了一个Flag,坚持更新。 原创,基于CSScss底部阴影,不要错过。

开门见山,对于一些可滚动的元素来说,存在这样一种非常常见的情况。 通常,滚动时,会在垂直于滚动条的左侧添加一个阴影,以指示当前有元素正在滚动,从而使滚动条的可见区域更厚,如下所示:

可以看到,在滚动过程中,会出现阴影:

对于滚动过程中外栏静止并吸附到边框的问题,CSS通常可以使用position:sticky来解决。

但对于只在滚动过程中出现的阴影(滚动容器中的内容没有对齐就会出现阴影,内容对齐阴影就会消失),前面的方法仍然需要使用JS来完成。

那么,有没有一种可以用纯CSS实现的解决方案呢? 呵呵呵呵,是的。 有一个特别适合场合的技巧css底部阴影,下面让我们一步步揭晓。

神奇的背景附件

要使用纯CSS来实现上面的滚动阴影,要用到的核心元素是background-attachment。

在之前的一篇文章《CSS实现视差效果》中,详细介绍了background-attachment。 借助background-attachment:fixed,很容易实现网站的滚动视差或者类似图片点击的水印效果,类似这样:

当然,我们今天的主角不是background-attachment:fixed,而是background-attachment:srcoll。

背景附件:srcoll

首先,介绍背景附件。 如果指定了background-image,则background-attachment确定背景是固定在图层中还是随包含它的块一起滚动。

简单来说,它决定了背景图案在可滚动容器中如何移动。 通过两个简单的demo,了解background-attachment: srcoll和background-attachment: local。

background-attachment:本地,这个和我们日常使用一致,可滚动容器的背景图案随容器滚动:

css底部阴影-使用纯CSS的滚动阴影效果

background-attachment: 滚动,这是明天的主角,它表明背景相对于元素本身是固定的,而不是随其内容一起滚动:

如果你还没有弄清楚它们之间的区别,可以戳下面的DEMO自己体验一下:

CodePen 演示 -- bg-attachment 演示

srcoll和local同时使用来实现窍门

说到这里,很多朋友可能还是一头雾水,我们到底要做什么? 这与本文中的滚动阴影有什么关系?

别担心,滚动阴影的难点在于一开始没有滚动时没有阴影解释,只有开始滚动时才会出现阴影。

所以这里,我们使用了background-attachment的两个属性:srcoll和background-attachment:local。 在滚动开始时,我们使用两层背景重叠来隐藏阴影背景。 滚动的时候,我们把叠加的部分移走,只露出阴影部分。

嗯? 什么意思。 我们将它用于滚动容器,添加两个渐变效果,分别使用background-attachment: srcoll和background-attachment: local,然后将它们叠加起来,像这样:


<ul> 
    <li>...</li>
    ...
    <li>...</li>
</ul> 

// 情形一:
.g-one {
    backgroundlinear-gradient(#fff, #f00);
    background-size100% 10px;
    background-repeat: no-repeat;
    background-attachment: local;
}

// 情形二:
.g-two {
    backgroundradial-gradient(at 50% 0, #000, #0f0 70%);
    background-size100% 10px;
    background-repeat: no-repeat;
    background-attachment: scroll;
}

// 情形三:
.g-combine {
    background
        linear-gradient(#fff, #f00),
        radial-gradient(at 50% 0%, #000, #0f0 70%);
    background-size100% 10px100% 10px;
    background-repeat: no-repeat;
    background-attachment: local, scroll;
}

实际效果是这样的,一个背景随容器滚动,另一个背景随容器固定。 随容器滚动的背景充当初始描边层:

OK,你可以看到,在滚动时,最后叠加的情况其实就是滚动时显示不同颜色(阴影)的疗效。 我们来调整一下两个渐变的颜色,遮罩层(background-attachment: local)为蓝色,然后固定阴影层(background-attachment:scroll)通过径向渐变模拟为我们想要的阴影颜色。

CSS代码大致是这样的:

.g-final {
    background
        linear-gradient(#fff, transparent 100%),
        linear-gradient(rgba(000, .5), transparent 100%);
    background-size100% 50px100% 10px;
    background-repeat: no-repeat;
    background-attachment: local, scroll;
}

使用 Linear-gradient(rgba(0, 0, 0, .5), 透明 100%) 线性渐变模拟黑色阴影:

好的,你完成了。 对于以上所有demo,您可以点击这里查看:

CodePen 演示 -- 纯 CSS 滚动阴影

如文章开头所示,该方法也可以直接在表格中使用:

CodePen 演示 -- 纯 CSS 表格滚动阴影

一些问题级联顺序

当然,上面的过程中,还有一个问题,就是因为使用了背景模拟的阴影,所以最终的疗效实际上是在阴影中(背景之上),但实际的疗效是差别不大。 如果您能接受这一点,那么这个解决方案就完全可用。

兼容性

当然还有一个问题就是后台附件的兼容性。 让我们看看我可以使用:

我可以使用下面的评论表明大多数兼容性问题似乎是由background-attachment:fixed引起的,这对本文的功效影响不大。

终于

本文方法非原创。 第一次听说是从这篇文章:探索CSS属性*-gradient的实用价值,并对其实际应用做了一些研究。

好了,本文就到此结束了。

更多精彩CSS技术文章汇总在我的Github——iCSS中,持续更新。 欢迎点击星星订阅合集。

如果还有疑问或者建议,可以多沟通。 原创文章写作水平有限,知识匮乏。 如果文章中有任何不准确的地方,请告诉我。

参考

[1]

css底部阴影-使用纯CSS的滚动阴影效果

CSS实现视差效果:

[2]

CodePen 演示 -- bg-attachment 演示:

[3]

CodePen 演示 -- 纯 CSS 滚动阴影:

[4]

CodePen 演示 -- 纯 CSS 表格滚动阴影:

[5]

我可以用吗:

[6]

探索CSS属性*-gradient的实用价值:

[7]

Github——iCSS:

交流讨论

欢迎关注公众号“前端试用”。 公众号通常会分享一些有用或有趣的东西,发现代码之美。 注重深度和最佳实践,希望打造一个高品质的公众号。

公众号后台回复“小莲”,加我为陌陌,我带你飞。

如果你觉得这篇文章还不错,就来【分享、点赞、观看】三遍,让更多人听到吧~

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 css css底部阴影-使用纯CSS的滚动阴影效果 https://www.wkzy.net/game/158175.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务