滚动时div的背景图片随之滚动

Posted 天天饱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了滚动时div的背景图片随之滚动相关的知识,希望对你有一定的参考价值。

在浏览一些网站时发现有一种效果是当滚动时看到某一DIV的背景也会随之滚动,如下:

当滚动时内容位置保持不变,但是内容后面的背景却在随着滚动。随之我通过审查元素看到了其是通过background-position来实现的,实现原理为当目标DIV出现在屏幕上时,当往下滚动时background-position的Y越来越小,反之则越大。

准备好一张大图,先写出布局

<style>
.wrap{width: 100%;height: 3000px;}
.wrap_bg{background: url(images/scroll_bg.jpg) no-repeat;background-position: center -300px;width: 100%;height: 600px;overflow: hidden;}
.content{width: 100%;height: 100px;text-align: center;color: #fff;font-size: 100px;margin-top: 100px;}
</style>

<div class="wrap">
    <div class="wrap_bg">
        <div class="content">
            内容
        </div>
    </div>
</div>

  

使用scroll()方法实现最终效果

var winHeight = $(window).height();//窗口高
var divHeight = $(\'.wrap_bg\').height();//div高
var divTop = $(\'.wrap_bg\').offset().top;//div距离html顶部高度
var prevtop = divTop;
$(window).on(\'scroll\',function(){
    var winTop = $(window).scrollTop();//滚动条滚动高度
    if(winTop+winHeight>divTop && winTop<divTop+divHeight){//判断div是否出现在屏幕
        if(winTop>=prevtop){//滚动条往下
            $(\'.wrap_bg\').finish().animate({
                backgroundPositionY:\'-=10px\'
            },100);
        }else{//滚动条往上
            $(\'.wrap_bg\').finish().animate({
                backgroundPositionY:\'+=10px\'
            },100);
        }
        prevtop = $(window).scrollTop();
    }
})

  

 

以上是关于滚动时div的背景图片随之滚动的主要内容,如果未能解决你的问题,请参考以下文章

滚动到特定 div 类时更改 div 颜色

如何在 MS Word 文档中显示代码片段,因为它在 *** 中显示(滚动条和灰色背景)

Android在滚动时修复了滚动视图中的背景图像

html里table表头随滚动条移动,表头只有一行,有横竖滚动条,而且横滚动条拖动的时候,表头也要随之移动

滚动时更改元素的高度

向上滚动时如何将一个div隐藏在另一个半透明的div后面