视差滚动:零基础css代码实现时空穿越效果

先贴出最终效果:
请添加图片描述
上面的图片中,底层为冬季大树图片,上层为春季大树图片。
上层元素滚动之间,春季图片的位置却没有变化,感觉像是上层元素的滚动使底层元素的冬季大树图片实现“时空穿越”似得。
如果我说这种“时空穿越”的代码使用10行css代码就能实现,你会相信吗?
请添加图片描述

要实现上面的效果,首先我们取到两张图片。
请添加图片描述
请添加图片描述
将整个页面分为三部分,上下为冬季大树,中间为春季大树。
我们放置三个div到页面上,并设置对应背景图片(这里使用网络图片,也可以将上面的大树图片下载到本地使用)。

.img {
    height: 450px;
    background-size: cover;
    background-position: center center;
}
.white_tree {
    background-image: url(https://t11.baidu.com/it/app=25&f=JPEG&fm=173&fmt=auto&u=3179434108%2C2098927155?w=640&h=640&s=C01A4D38D3ADC2EC1D4CB1D60100C0A3);
}
.green_tree {
    background-image: url(https://t10.baidu.com/it/app=25&f=JPEG&fm=173&fmt=auto&u=172551123%2C3937572781?w=640&h=640&s=A1915B944A2CC2CC553CA27603008067);
}
   <div class="bar">
       <div class="img white_tree"></div>
       <div class="img green_tree"></div>
       <div class="img white_tree"></div>
   </div>

此时三张图片从上到下依次排列。
请添加图片描述
三张图片的父元素被完全撑开,同时露出了三个元素。
而在实例中我们发现,父元素的大小是同时露出两个元素的大小,所以我们限制父元素大小为两个子元素的高度,并设置其为可滚动。

.bar {
   height: 900px;
   overflow: scroll;
}

此时页面元素整体滚动方式已经类似示例,只是滚动效果不同。
用专业的名字来说,此时的滚动是普通滚动,而不是视差滚动。
普通滚动效果如下:
请添加图片描述
使用css形式实现视觉差滚动效果的方式有background-attachment、transform:translate3D。
这里使用background-attachment属性来实现。
background-attachment属性作用是设置背景图像是否固定或者随着页面的其余部分滚动。
它有三个属性:

  1. scroll:默认值,背景图像会随着页面其余部分的滚动而移动
  2. fixed:当页面的其余部分滚动时,背景图像不会移动
  3. inherit:继承父元素background-attachment属性的值

完成滚动视觉差就需要将background-attachment属性设置为fixed,让背景相对于视口固定。
向三个元素中添加样式。

/* ... */
.img {
   /* ... */
   background-attachment: fixed;
}
/* ... */

刷新页面,页面出现了时间穿越般的滚动效果。
请添加图片描述

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值