0

所以我需要一个网站的一部分来让背景图像产生视差。问题是代码从网站的开头计算视差(它是一个长向下滚动类型的网站),当我到达提到的部分时,背景已经太远了。代码中是否需要某种“延迟”,以便在滚动 X 个像素后开始视差?这里的代码:

查询:

$(document).ready(function() {
    // Cache the Window object
    $window = $(window);

    $('section[data-type="background"]').each(function() {
        var $bgobj = $(this); // assigning the object

        $(window).scroll(function() {

            // Scroll the background at var speed
            // the yPos is a negative value because we're scrolling it UP!                              
            var yPos = -($window.scrollTop() / $bgobj.data('speed'));

            // Put together our final background position
            var coords = '50% ' + yPos + 'px';

            // Move the background
            $bgobj.css({
                backgroundPosition: coords
            });
        }); // window scroll Ends
    });
});

HTML:

<section id="background" data-type="background" data-speed="5">
    <div class="container">
        <div class="shadow-block"><img src="images/shadow-b.png" alt="" class="scale-with-grid"/></div>
            <div class="quote two-thirds column" >  
            </div>
            </div>
</section>

CSS:

#background {
    background: url(../images/big-bg.jpg)no-repeat center center;
    background-size:cover;
    width: 100%;
    height:500px;
    padding: 40px 0;
    overflow: hidden;
    position: relative;
}
4

3 回答 3

0

当元素显示在屏幕上时,您可以执行视差效果:

if (($(window).scrollTop() + $(window).height()) > elementPositionTop) {
   //
}

我认为这就足够了。

于 2014-05-18T17:16:00.557 回答
0

不要使用“background-size:cover”css 属性并注意你的背景图像应该大于每个视口的大小,最后滚动速度应该是下降的方式,这意味着第一张幻灯片应该有更多滚动速度比第二张幻灯片快。

于 2014-02-01T21:55:22.117 回答
0

你不能做这样的事情吗?

var Top = $(document).scrollTop();
    if(Top < 200){ 
    //Then do the parallax stuff...
}
于 2013-11-07T17:02:35.257 回答