在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开门见山,有这样一种非常常见的情况,对于一些可滚动的元素而言。通常在滚动的时候会给垂直于滚动的一侧添加一个阴影,用于表明当前有元素被滚动给该滚出了可视区域,类似这样: 可以看到,在滚动的过程中,会出现一条阴影: 对于两侧的列在滚动的过程中,静止不动,吸附在边界的问题,通常 CSS 使用 但是对于滚动过程中才出现的阴影(滚动容器内的内容没有贴边,则阴影出现,贴边,则阴影消失),之前的做法一直都是需要借助 JS 完成的。 那么,有没有纯 CSS 能够实现的方案呢?嘿嘿嘿,有。有一种非常讨巧的障眼法,下面就让我们来一步一步揭开它的面纱。 神奇的 要使用纯 CSS 实现上述滚动阴影,最核心的要使用到的元素就是 在较早的一篇文章里 --CSS 实现视差效果,详细了介绍了 当然,今天我们的主角不是
首先,介绍一下 简单而言,就是决定了在可滚动的容器中,背景图案是如何进行运动的。通过两个简单的 Demo,弄懂
如果你还没弄明白他们的区别,可以戳下面的 DEMO 自己感受一下: CodePen Demo -- bg-attachment Demo
到这里,可能很多同学还是懵的,我们到底要做什么呢?这个和本文的滚动阴影有什么关联呢? 别急,滚动阴影的难点在于,初始没有滚动的时候是没有阴影展现的,只有当开始滚动,阴影才会出现。 所以这里,我们借助 嗯?什么意思。我们用给滚动容器,加上两个渐变效果,分别运用上 <!-- 可滚动容器 --> <ul> <li>...</li> ... <li>...</li> </ul> // 情形一: .g-one { background: linear-gradient(#fff, #f00); background-size: 100% 10px; background-repeat: no-repeat; background-attachment: local; } // 情形二: .g-two { background: radial-gradient(at 50% 0, #000, #0f0 70%); background-size: 100% 10px; background-repeat: no-repeat; background-attachment: scroll; } // 情形三: .g-combine { background: linear-gradient(#fff, #f00), radial-gradient(at 50% 0%, #000, #0f0 70%); background-size: 100% 10px, 100% 10px; background-repeat: no-repeat; background-attachment: local, scroll; } 实际效果就是这样,一个背景是随容器滚动,一个背景是随容器固定。随容器滚动的背景充当初始的遮罩层: OK,可以看大,当滚动的时候,最后一幅叠加的情况,其实就是我们需要的滚动的时候展示不同的颜色(阴影)的效果。我们调整一下两个渐变的颜色,遮罩层( CSS 代码大概是这样: .g-final { background: linear-gradient(#fff, transparent 100%), linear-gradient(rgba(0, 0, 0, .5), transparent 100%); background-size: 100% 30px, 100% 10px; background-repeat: no-repeat; background-attachment: local, scroll; } 利用 OK,大功告成。上述所有 DEMO,可以戳这里看看: CodePen Demo -- Pure CSS Scroll shadow 如文章开头所示,这技巧也是可以直接运用在 CodePen Demo -- Pure CSS Table scroll shadow 一些问题层叠顺序 当然,在上述的过程中,其实一直有个问题,就是由于是使用背景 兼容性 嗯,当然还有一个问题是就是 Can i use 下面的注释表明,大部分兼容问题其实是出在 最后 本文技巧非原创,第一次看到来自这篇文章:探索CSS属性*-gradient的实用价值,对其能否在实际中运用再做了一些探究。 到此这篇关于使用纯 CSS 实现滚动阴影效果的文章就介绍到这了,更多相关CSS 实现滚动阴影内容请搜索极客世界以前的文章或继续浏览下面的相关文章,希望大家以后多多支持极客世界! |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论