尝试获得更平滑的视差滚动速度 and/or 深度感知
Trying to get a smoother parallax scroll speed and/or depth perception
我正在处理一个需要视差效果的网站。没什么好看的。
我想要实现的是 similar to this - 页面中间。观察滚动速度,是..."buttery smooth"。这么说吧。
我的也差不多,除了滚动速度,我好像不太懂。 Fiddle.
CSS:
section.module.parallax {
height: 200px;
background-position: 50% 50%;
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
}
section.module.parallax-1 {
background-image: url("http://wearefetch.com/wp-content/uploads/2014/07/3.jpg");
}
.up{
width: 100%;
height: 400px;
background-color: red;
}
.down{
width: 100%;
height: 400px;
background-color: blue;
}
HTML:
<div class="up"></div>
<section class="module parallax parallax-1">
<div class="container"></div>
</section>
<div class="down"></div>
我尝试在 another fiddle 中使用 data-speed
。不过好像差别不大。
代码与第一个Fiddle完全相同,只是添加了一些javascript,当然还有data-speed
,设置为10。
$(document).ready(function () {
$('section[data-type="background"]').each(function () {
var $bgobj = $(this);
$(window).scroll(function () {
var yPos = ($(window).scrollTop() / $bgobj.data('speed'));
var coords = '50% ' + yPos + 'px';
$bgobj.css({
backgroundPosition: coords
});
});
});
});
我不是前端人员,所以,虽然我确定这可能很简单,但我似乎无法让它工作。
非常感谢任何朝着正确方向的推动。
如果您将背景设置为与滚动速度不同(较慢)的速度,则视觉上会出现视差效果。
作为视点的垂直滚动条上下移动,背景图像代表远处的物体,并且比背景上方的文本等较近的物体移动得更慢。
Fiddle of this question 是一个很好的起点。
Fiddle处理滚动事件,"parallax"通过设置固定背景图backgroundPosition
属性。
演示标记(css 仅内联示例):
<div id="parallax" style="background-position: 50% 0;background-repeat: no-repeat;background-attachment: fixed;background-image: url('http://lorempixel.com/1400/700');">Text in Front appears closer and moves faster</div>
Javascript:
(function ($) {
"use strict";
var $el = $('#parallax');
// scroll callback
$(window).scroll(function () {
updateBackground($el);
});
updateBackground($el);
});
}(jQuery));
var speed = 0.4;
function updateBackground($el) {
var diff = $(window).scrollTop() - $el.offset().top;
var yPos = -(diff * speed);
var coords = '50% ' + yPos + 'px';
$el.css({
backgroundPosition: coords
});
}
我正在处理一个需要视差效果的网站。没什么好看的。
我想要实现的是 similar to this - 页面中间。观察滚动速度,是..."buttery smooth"。这么说吧。
我的也差不多,除了滚动速度,我好像不太懂。 Fiddle.
CSS:
section.module.parallax {
height: 200px;
background-position: 50% 50%;
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
}
section.module.parallax-1 {
background-image: url("http://wearefetch.com/wp-content/uploads/2014/07/3.jpg");
}
.up{
width: 100%;
height: 400px;
background-color: red;
}
.down{
width: 100%;
height: 400px;
background-color: blue;
}
HTML:
<div class="up"></div>
<section class="module parallax parallax-1">
<div class="container"></div>
</section>
<div class="down"></div>
我尝试在 another fiddle 中使用 data-speed
。不过好像差别不大。
代码与第一个Fiddle完全相同,只是添加了一些javascript,当然还有data-speed
,设置为10。
$(document).ready(function () {
$('section[data-type="background"]').each(function () {
var $bgobj = $(this);
$(window).scroll(function () {
var yPos = ($(window).scrollTop() / $bgobj.data('speed'));
var coords = '50% ' + yPos + 'px';
$bgobj.css({
backgroundPosition: coords
});
});
});
});
我不是前端人员,所以,虽然我确定这可能很简单,但我似乎无法让它工作。
非常感谢任何朝着正确方向的推动。
如果您将背景设置为与滚动速度不同(较慢)的速度,则视觉上会出现视差效果。
作为视点的垂直滚动条上下移动,背景图像代表远处的物体,并且比背景上方的文本等较近的物体移动得更慢。
Fiddle of this question 是一个很好的起点。
Fiddle处理滚动事件,"parallax"通过设置固定背景图backgroundPosition
属性。
演示标记(css 仅内联示例):
<div id="parallax" style="background-position: 50% 0;background-repeat: no-repeat;background-attachment: fixed;background-image: url('http://lorempixel.com/1400/700');">Text in Front appears closer and moves faster</div>
Javascript:
(function ($) {
"use strict";
var $el = $('#parallax');
// scroll callback
$(window).scroll(function () {
updateBackground($el);
});
updateBackground($el);
});
}(jQuery));
var speed = 0.4;
function updateBackground($el) {
var diff = $(window).scrollTop() - $el.offset().top;
var yPos = -(diff * speed);
var coords = '50% ' + yPos + 'px';
$el.css({
backgroundPosition: coords
});
}