javascript - 滚动时如何在水平条后面实现视差

标签 javascript html css parallax

我已经见过这种效果好几次了,但我找不到它的“名字”——它叫什么名字?这种效应背后的基本理论是什么?它是使用纯 CSS,还是主要由 JS 驱动?

描述:

当用户垂直向下滚动页面时,纯色背景让位给背景图像,就像“curtain reveal”一样。然而,不仅仅是到达页面底部,另一个水平条以与之前的“纯色背景”相同的速度移动,从底部覆盖背景图像。随着用户继续滚动,纯色背景再次让位于背景图像,但这次背景已更改为其他图像。其效果类似于魔术师在物体前挥动他或她的手,物体以某种方式发生显着变化。

另一种说法是纯色背景中存在“缝隙”,通过这些缝隙可以看到不同的背景图像。

这是我找到的一个例子(经过大量搜索):http://www.astoriacassis.com/
(忽略顶部的“画廊”式旋转图像。向下滚动并注意游泳池的图片,然后是一盏上面有大象的灯。)

最初我认为它可能类似于 parallax effect , 但它实际上看起来有很大的不同。

我以前见过这种效果,我想知道如何复制它。

最佳答案

这是通过在移动 div 时利用背景附件属性来创建使图像看起来发生变化的效果来实现的,而实际上它只是两个 div向上滚动屏幕。

查看此 CodePen 以获得演示:http://codepen.io/anon/pen/sCuvI/

重要部分:

HTML

<div class="content">
  Lorem Ipsum
</div>
<div id="s1" class="scroll"></div>
<div class="content">
  Lorem Ipsum
</div>
<div id="s2" class="scroll"></div>

CSS

.scroll
{
  width: auto;
  height: 200px;
  /*The important part*/
  background-attachment: fixed;
  background: no-repeat center center fixed;
  /*Stretch the background*/
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -ms-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
}

关于javascript - 滚动时如何在水平条后面实现视差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22624844/

相关文章:

html - SVG <symbol> 不会像其他的那样缩放

javascript - jQuery Draggable 拖出屏幕

javascript - 将对象(几乎)拖到窗口外时,如何使窗口自动向该方向滚动?

javascript - Ajax 更新和表单输入选择字段

javascript - 通过鼠标单击获取图像映射的坐标

html - CSS中的居中框

jquery - 所有内容都显示在一行中,而不是它们应该在的行中

html - HTML GIF 上方的未知行

javascript - 谷歌地图多重叠加无累积不透明度

javascript - 在没有容器溢出的情况下更改绝对元素的位置