【问题标题】:Parallax effect with CSS transition带有 CSS 过渡的视差效果
【发布时间】:2015-11-28 05:51:27
【问题描述】:

是否可以使用 css 过渡制作背景图像的视差效果?视差应该比滚动慢,所以需要放慢速度 - 可以用 css 来做吗?或者如果没有,如何最好地使用 js/jquery?

我关心最佳性能脚本,因为我的网页很少超载。

有人可以告诉或展示如何做吗?我将不胜感激。

【问题讨论】:

  • 否,因为视差将与滚动一起使用,而 css 不理解滚动事件,因此使用 css 我们可以制作简单的固定背景效果,但不能制作带有移动前背景图像的原始视差,您需要使用仅限 js :)
  • 好的,那么如何最好地使用 js/jquery 来解决呢? (而最好的表现)
  • 如果你真的需要移动背景的效果,那么我们需要根据你的适用性使用一些强大的 js aur 插件,但如果你可以在固定背景下使用类似的视差效果,那么它就这么简单你只需将背景图像放入具有background-size:cover 属性的css 中,它将正常工作。 :)
  • 技术上仅使用 CSS 是可行的:keithclark.co.uk/articles/pure-css-parallax-websites
  • @GauravAggarwal,那是绝对不是真的 - 请看我的回答。

标签: html css css-transitions parallax


【解决方案1】:

CSS 有一个 perspective 属性,您可以将其与 zoom 结合使用以实现一个元素“在”其他元素的“后面”或“前面”,从而以不同的速度滚动。

这方面有很多资源,@dwreck08 提供的资源是最好的资源之一:http://keithclark.co.uk/articles/pure-css-parallax-websites/

这是一个快速复制:

.parallax {
  height: 100vh;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-perspective: 1px;
  perspective: 1px;
}
.parallax__layer {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}
.parallax__layer--base {
  transform: translateZ(0);
  color: white;
  background: url(http://cliparts.co/cliparts/pT5/A7L/pT5A7L8T9.png) center no-repeat;
  background-size: 50% auto;
}
.parallax__layer--back {
  transform: translateZ(-1px) scale(2);
  background: url(http://www.hdiphone6wallpapers.net/iphone-6-backgrounds/iphone-6-wallpapers-2/iphone-6-wallpapers-hd-100pb94q-1080x1920.jpg) no-repeat;
}
.parallax__layer--slow {
  transform: translateZ(-4px) scale(4);
  background: url(http://1.bp.blogspot.com/-ZRDN2sugdrg/UXa1qeFfjYI/AAAAAAAAVjo/1m10L-jCIgo/s1600/starcraft_2_render7E0.png) no-repeat center;
  background-size: 100%;
}

* {
  margin: 0;
  padding: 0;
}

.parallax {
  font-size: 16px;
}

.parallax__layer {
  padding: 75vh 0;
}
<div class="parallax">
  <div class="parallax__layer parallax__layer--back">
  </div>
  <div class="parallax__layer parallax__layer--slow">
  </div>
  <div class="parallax__layer parallax__layer--base">
  </div>
</div>

要控制每一层的滚动速度,请更改translateZscale 属性。

【讨论】:

  • 看起来很漂亮,但是在这种情况下是否可以制作背景视差效果(意味着背景是具有100%宽度和指定高度的图像,前景是一些内容)?我只是在尝试实现它,但到目前为止还没有效果。
  • 是的,你可以在这些视差块中放置几乎任何你喜欢的东西,没有任何限制。
  • 只有一个问题 - 当点击屏幕并向右拖动时,它会水平滚动。有什么想法,如何预防?该问题有时与左键单击和鼠标滚轮单击有关。
  • 哈,谢谢,不过我只是修改了代码,所有的荣誉都归于作者。我注意到滚动问题 - 它也在原始示例中。它必须与overflow-x 做一些事情。
猜你喜欢
  • 2014-12-30
  • 2013-01-26
  • 2013-12-02
  • 1970-01-01
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-16
相关资源
最近更新 更多