背景图像与视差

时间:2013-11-07 17:00:31

标签: jquery html css

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

JQUERY:

$(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;
}

3 个答案:

答案 0 :(得分:0)

你能不做这样的事吗?

var Top = $(document).scrollTop();
    if(Top < 200){ 
    //Then do the parallax stuff...
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

我认为这就足够了。