HTML 5独立滚动视角错觉

Sja*_*ien 5 html scroll

是否有一些示例HTML代码可以建立以下效果:

有一个前景层,包含文本和图像.然后有一个背景图层,显示图像,

当用户滚动页面时,前景以常规速度滚动,但背景速度较低.

这将创造一个类似摩登原石的人造视角.

zzz*_*Bov 7

你所谈论的这种"虚假视角"被称为视差.

网上有很多演示

我会建议使用背景图像bodybackground-attachment: fixed,然后设定一个较短的计时器来检查页面滚动长度.

在计时器的每次更新时,检测滚动长度,并将其乘以修饰符(比如0.1),将此新值设置为background-position:

$body = $('body');

function parallax()
{
  var pageOffsetX, pageOffsetY, modifiedOffsetX, modifiedOffsetY;

  pageOffsetX = ...//get the offset
  pageOffsetY = ...//get the offset
  modifiedOffsetX = pageOffsetX * 0.1;
  modifiedOffsetY = pageOffsetY * 0.1;

  $body.css('background-position', modifiedOffsetX + 'px ' + modifiedOffsetY + 'px');
  setTimeout(parallax, 100);
}

parallax();
Run Code Online (Sandbox Code Playgroud)

修饰符是用户滚动的每个px应该移动多少背景.如果背景不应重复,则可能需要调整偏移量,并且可能需要根据获取pageOffset值的方式来否定偏移量.

调整超时将改变背景的响应性.您可以捕获鼠标滚动事件,但您还必须检查用户是否通过链接跳过了页面等.