关于JS实现延迟加载

不多说 直接上代码

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
       *{
         margin: 0px;
         padding: 0px;
        - webkit - box - sizing: border - box;
         - moz - box - sizing: border - box;
         - ms - box - sizing: border - box;
          box - sizing: border - box;
       }
       li{
          margin: 35px;
          list-style-type: none;
          float: left;

       }
       .box li img{
          opacity: 0;
        }
    </style>
    <script>
function getByClass(oparent,oclass){
    try {
        return oparent.querySelectorAll("." + oclass);
    } catch (ex){
        var reset = [];
        var reg = new RegExp("\\b" + oclass + "\\b");
        var oCur = oparent.all;
        for (var i = 0; i < oCur.length; i++) {
            if (reg.test(oCur[i].className)) {
                reset.push(oCur[i]);
            }
        };
        return reset;
    }
}
function getStyle(obj,name){
     if(obj.currentStyle){
      return obj.currentStyle[name];
     }else{
      return getComputedStyle(obj,false)[name];
    }
   }
 function Stratmove(obj,json,funEnd){
       clearInterval(obj.timer);
       obj.timer=setInterval(function(){
       for(var attr in json){
        var bStop=true;
        var curr=parseInt(getStyle(obj,attr));
        var spped=0;
        if(attr=="opacity"){
           var curr=Math.round(parseFloat(getStyle(obj,attr))*100);
        }else{
           curr=parseInt(getStyle(obj,attr));
        }
        spped=(json[attr]-curr)/8;
        spped=spped>0?Math.ceil(spped):Math.floor(spped);
        if(curr!=json[attr]){
           bStop=false;
        }
          if(attr=="opacity"){
               obj.style.opacity=(curr+spped)/100;
             }else{
               obj.style[attr]=curr+spped+"px";
            }
          if(bStop){
          clearInterval(obj.timer);
          if(funEnd)funEnd();
         }
     }
   },30)
}
       window.onload=function(){
           var box=getByClass(document,"box")[0];
                 oimg=box.getElementsByTagName("img");
                window.onresize=window.onscroll=function(){
                    rung();
                 }
                 function rung(){
                     var  scrltop=document.documentElement.scrollTop||document.body.scrollTop;
                           winH=document.documentElement.clientHeight;
                           for (var i = 0; i < oimg.length; i++) {
                               var imgH=(oimg[i].offsetHeight)/3;
                                     imgTop=scrltop+oimg[i].getBoundingClientRect().top;
                               if(imgTop>=scrltop&&winH+scrltop>=imgTop){
                                        Stratmove(oimg[i],{"opacity":100})
                               }
                           };
                 }
                 rung();

       }
    </script>
</head>
<body>
      <div class="box">
           <ul>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
              <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
               <li><img src="1.jpg" alt=""></li>
           </ul>
      </div>
</body>
</html>

原理就是根据浏览器窗口还有scrollTop来和图片本身的位置进行判断,显示,这里用的是淡入淡出效果,还可以弄其他的效果,看大家的喜好

时间: 2024-10-06 23:40:34

关于JS实现延迟加载的相关文章

js图片延迟加载

http://stylechen.com/imglazyload2.html [译]页面加载中的图片性能优化 2013年05月26日 吴 天豪 性能优化  原文地址:http://www.stevesouders.com/blog/2013/04/26/i/ 我的大部分性能优化工作都集中在JavaScript和CSS上,从早期的Move Scripts to the Bottom和Put Stylesheets at the Top规则.为了强调这些规则的重要性,我甚至说过,"JS和CSS是页面

jquery.lazyload.js图片延迟加载

一.插件介绍 jquery.lazyload.js 是一个用 JavaScript 编写的jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置.这与图片预加载的处理方式正好是相反的.在包含很多大图片长页面中延迟加载图片可以加快页面加载速度.浏览器将会在 加载可见图片之后即进入就绪状态. 在某些情况下还可以帮助降低服务器负担.  二.插件作者下载地址 JS下载:http://www.ijquery.cn/js/lazyloa

jquery.lazyload.js 图片延迟加载

当做网页的时候,特别是整个网页展示图片较多的时候,用到图片延迟效果是很好的 使用方法也非常简单. 1.在网页任何位置(一般是在</body>前面)加上如下代码(注意<script>引用的两个js文件,路径自行设定): <script src="js/jquery.min.js"></script> <script src="js/jquery.lazyload.min"></script> &l

jQuery与lazyload.js图片延迟加载

一.简介: 在html中请求图片是最大的一处难题,图片的大小给我们的服务器带来了很大的压力,造成了请求时间过长.图片难以加载出来.jQuery图片延迟加载插件jQuery.lazyload,使用延迟加载在可提高网页下载速度. 基于 jQuery 的图片延迟加载插件,在用户滚动页面到图片之后才进行加载.对于有较多的图片的网页,使用图片延迟加载,能有效的提高页面加载速度. 官网:https://appelsiini.net/projects/lazyload/ 帮助:http://code.ciao

js图片延迟加载如何实现

这里延迟加载的意思是,拖动滚动条时,在图片出现在浏览器显示区域后才加载显示. 大概的实现方式是: 在页面的load没有触发之前,把所有的指定id的元素内的img放入到imgs中,将所有的图片的src值放入到一个新建的_src属性中,把src设置为指定的显示图片. 然后,在document.body的scroll事件触发时,循环计算imgs中的img元素位置是否正好在浏览器显示框范围内,如果是,则将img元素的_src属性的值赋给src,这样图片就能显示出来. 这里比较麻烦地方是,如何计算img的

JS 图像延迟加载

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text/css"> 7 #box{ 8 width: 100px; 9 height: 100px; 10 background: url(img/1.jpg); 11 } 12 </sty

lazysizes-好用的延迟加载JS插件

此插件可直接引入lazysizes即可 <script src="lazysizes.min.js"></script> 延迟加载(lazy load)是(也称为懒加载)Hibernate3关联关系对象默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作. 浏览器加载过程中,由于图片过多导致加载速度过慢,那么我们只需要在"看得见"的地方加载图片,而"看不见

延时加载js代码提高速度

延时加载js代码提高速度:如果网页中存在大量的javascript代码会极大的影响网页的访问速度,下面就简单介绍一下如何处理此问题.一.延时加载js文件:可以使用定时器函数setTimeout()让外部的js文件延迟加载,例如: <script type="text/javascript" src="" id="my"></script> <script type="text/javascript"

JS图片预加载插件

在开发H5项目中有时候会遇到要加载大量图片的情况,利用预加载技术可以提高用户浏览时的体验. 1)概念:懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片.预加载:提前加载图片,当用户需要查看时可直接从本地缓存中渲染. 2)区别:两种技术的本质:两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载.懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力. 服务器端区别:懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数.预加载可以说是牺牲