如何实现水平视差滚动?

时间:2014-08-19 15:39:52

标签: jquery css html5

我希望我的网站背景在水平滚动时具有水平(而非垂直)视差效果。我使用以下jQuery代码制作一个垂直滚动的网站;我试图做一些改变让它横向工作,但遗憾的是没有运气。

$(document).ready(function(){
    var $window = $(window);
    $('section[data-type="background"]').each(function(){
        var $bgobj = $(this);
        $(window).scroll(function() {
            var yPos = -( ($window.scrollTop() - $bgobj.offset().top) / $bgobj.data('speed'));
            var coords = '50% '+ yPos + 'px';
            $bgobj.css({ backgroundPosition: coords });
        });
    });
});

2 个答案:

答案 0 :(得分:0)

您需要使用水平位置替换yPosscrollTop().top。例如,您可以使用scrollLeft()代替。

See this previous question

要实现视差,您需要滚动不同的"层"不同速度的元素。前景元素移动得更快(在相同的时间内移动像素更多),背景移动得更少。

您可以通过以下几种方式实现这一目标 - 使用元素类型的硬编码像素值,乘以某个速度因子等。

上面的代码仅适用于"窗口"作为一个整体。您需要捕获想要单独滚动的元素。同时也将水平滚动值应用于它们。

答案 1 :(得分:0)

有些事情如下:

var parallaxDiv = '';
$(document).ready(function(){
  parallaxDiv = $('#parallaxDiv');
});
$(window).scroll(function () {
  var st = $(window).scrollTop();
  parallaxDiv.css({'background-position-x': 0 + (st*.57 )+"px"});
});

这取决于你是想要改变背景位置还是左/右位置,但这应该有效。