纯 CSS 实现视差滚动

视差滚动效果在前几年就流行起来,最近 tag Design 的新作品折扇 App 也有所运用。在介绍折扇历史的时候,滑动长轴画卷,元素的移动有快有慢,创造了景深的效果。

折扇 App

可以尝试用 CSS 3 的 perspective 属性,在网页简单实现这种效果。

首先让滚动发生在父元素的内部,并给父元素加上 perspective: 1px,让父元素获得三维的观察视角。

.container {
  width: 100vw;
  height: 100vh;
  overflow-x: auto;
  overflow-y: hidden;
  perspective: 1px;
}

然后再给不同元素分别加上不同的 transform 属性,translateZ 值调节元素在 Z 轴的位置(近大远小),同时配合 scale 值让元素的大小看起来和原来无异。那么就实现了滚动过程中,不同元素看起来的运动速度不同。

.img-1 {
  transform: translateZ(-1px) scale(2); //变慢两倍
}
.img-2 {
  transform: translateZ(-2px) scale(3); //变慢三倍
}
.text-1 {
  transform: translateZ(0.5px) scale(0.5); //变快两倍
}
demo1

纯 CSS 的视差滚动实现,优点是不需要 JS 插件、加载速度快,缺点是兼容性一般。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容