返回顶部效果

<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<title>延迟加载图片</title>
<style>
*{margin:0; padding:0;}
.hh{height:500px; background:rgba(20,10,50,.2);}
.wrap{height:300px; width:300px; background:rgba(255,200,200,.7); position:relative }
#imgWrap{ position:relative;}
img{display:block;}
#backToTop{width:37px; height:38px;position:fixed; bottom:10px; right:10px; display:none; background:url("http://img1.bdstatic.com/static/searchresult/img/result-huge-bg_2c8c18f.png") 1px 0;}
#backToTop:hover{background:url("http://img1.bdstatic.com/static/searchresult/img/result-huge-bg_2c8c18f.png") -37px 0;}
</style>
</head>
<body>
<div class="hh"></div>
<div id="imgWrap" >
    <div class="wrap">
        <img _src="images/1.jpg" src="images/blanck.png" width=200 height=200 />
    </div>
    <div class="wrap">
        <img _src="images/2.jpg" src="images/blanck.png" width=200 height=200 />
    </div>
    <div class="wrap">
        <img _src="images/3.jpg" src="images/blanck.png" width=200 height=200 />
    </div>
    <div class="wrap">
        <img _src="images/4.jpg" src="images/blanck.png" width=200 height=200 />
    </div>
    <div class="wrap">
        <img _src="images/5s.jpg" src="images/blanck.png" width=200 height=200 />
    </div>
    <div class="wrap">
        <img _src="images/6.jpg" src="images/blanck.png" width=200 height=200 />
    </div>
    <div class="wrap">
        <img _src="images/7.jpg" src="images/blanck.png" width=200 height=200  />
    </div>
</div>
<div class="hh"></div>
<div id="imgWrap" >
    <div class="wrap">
        <img _src="images/1.jpg" src="images/blanck.png" width=200 height=200 />
    </div>
    <div class="wrap">
        <img _src="images/2.jpg" src="images/blanck.png" width=200 height=200 />
    </div>
    <div class="wrap">
        <img _src="images/3.jpg" src="images/blanck.png" width=200 height=200 />
    </div>
    <div class="wrap">
        <img _src="images/4.jpg" src="images/blanck.png" width=200 height=200 />
    </div>
    <div class="wrap">
        <img _src="images/5s.jpg" src="images/blanck.png" width=200 height=200 />
    </div>
    <div class="wrap">
        <img _src="images/6.jpg" src="images/blanck.png" width=200 height=200 />
    </div>
    <div class="wrap">
        <img _src="images/7.jpg" src="images/blanck.png" width=200 height=200  />
    </div>
</div>
<a href="javascript:;" id="backToTop"></a>
</body>
</html>
<script type="text/javascript">

function lazyLoadImg(id){
    this.obj=obj;
    this.aImg=this.obj.getElementsByTagName("img");
    this.screnH=document.documentElement.clientHeight||document.body.clientHeight;
    this.init();
}

lazyLoadImg.prototype.init=function(){
    var _this=this;
    var t=document.body.scrollTop || document.documentElement.scrollTop;
    console.log(t);
    this.judge(t);
    addEvent(window,"scroll",function(){
        var t =document.documentElement.scrollTop || document.body.scrollTop;
        _this.judge(t);
    })
}

lazyLoadImg.prototype.judge=function(t){
    var aImg=this.aImg;
    var len=aImg.length;
    var screnH=this.screnH;
    for(var i=0;i<len;i++){
        var src=aImg[i].getAttribute("_src");
        if(src){
            var _src=aImg[i].getAttribute("src");
            if(src && this.disTop(aImg[i])-t<screnH){
                aImg[i].setAttribute("src",src);
                aImg[i].onerror=function(){
                    this.setAttribute("src",_src);
                    console.log("图片加载失败喽")
                }
                aImg[i].removeAttribute("_src");
            }    
        }
    }
}

lazyLoadImg.prototype.getCss=function(obj,attr){
    return (obj.currentStyle || window.getComputedStyle(obj,false))[attr];
}

lazyLoadImg.prototype.disTop=function(obj){
    var tt=obj.offsetTop;
    while(obj.parentNode.nodeName.toLocaleLowerCase()!=="html"){
        obj=obj.parentNode;
        if(this.getCss(obj,"position")!="static" && obj.offsetTop){
            tt=tt+obj.offsetTop;
        }
    }
    return tt;
}

var obj=document.getElementById("imgWrap");
new lazyLoadImg(obj);


function addEvent(obj,event,fn){
    if(obj.addEventListener){
        obj.addEventListener(event,fn,true)
    }else{
        obj.attachEvent("on"+event,fn)
    }
}


function backTop(json){
    
    addEvent(window,"scroll",function(){
        var nTop=document.body.scrollTop || document.documentElement.scrollTop;
        if(nTop>json.maxTop){
            json.obj.style.display="block";
        }else{
            json.obj.style.display="none";
        }
    })
    
    addEvent(json.obj,"click",function(){
        var nTop=document.body.scrollTop || document.documentElement.scrollTop;
        var nLeft=document.body.scrollLeft || document.documentElement.scrollLeft;        
        var allStep=Math.ceil(json.cost/30);
        var n=0;
        json.obj.timer=setInterval(function(){
            n++;
            var curPos=nTop*(1-n/allStep*n/allStep);
            window.scrollTo(nLeft,curPos)
            if(n===allStep){
                clearInterval(json.obj.timer);
            }
        },30)
    })
    
}

var obj=document.getElementById("backToTop");
backTop({maxTop:300,obj:obj,cost:500});
</script>

我就想知道这个可以不可以上前端的头条新闻,丫的

原文地址:https://www.cnblogs.com/busicu/p/5872075.html