lazyload-图片懒加载控件开发
2016-12-11 15:43
218 查看
原生js开发
1),prototypehtml:
<ul> <li> <a href=""> <span class="lazy" data-original="img/4.jpg" style="background-image:url(img/1.jpg)"> </span> </a> </li> <li> <a href=""> <span class="lazy" data-original="img/4.jpg" style="background-image:url(img/1.jpg)"> </span> </a> </li> <li> <a href=""> <span class="lazy" data-original="img/4.jpg" style="background-image:url(img/1.jpg)"> </span> </a> </li> <li> <a href=""> <span class="lazy" data-original="img/4.jpg" style="background-image:url(img/1.jpg)"> </span> </a> </li> <li> <a href=""> <span class="lazy" data-original="img/4.jpg" style="background-image:url(img/1.jpg)"> </span> </a> </li> <li> <a href=""> <span class="lazy" data-original="img/4.jpg" style="background-image:url(img/1.jpg)"> </span> </a> </li> </ul>
js:
(function (name, definition) { if (typeof define === 'function') { define(definition); } else { this[name] = definition(); } })('LazyLoad', function () { function LazyLoad(eleGroup){ this.eleGroup=null; this.eleTop=null; this.eleHeight=null; this.screenHeight=null; this.visibleHeight=null; this.scrollHeight=null; this.scrolloverHeight=null; this.limitHeight=null; } LazyLoad.prototype.tagName=function(tagName){ return document.getElementsByTagName(tagName); } LazyLoad.prototype.addEvent=function(obj,type,func){ if(obj.addEventListener){ obj.addEventListener(type,func,false); }else if(obj.attachEvent){ obj.attachEvent('on'+type,func); } } LazyLoad.prototype.init=function(element){ var that = this; that.eleGroup=that.tagName(element); that.screenHeight=document.documentElement.clientHeight;//可视区域高度 that.scrolloverHeight=document.body.scrollTop; for(var i=0,j=that.eleGroup.length;i<j;i++){ if(that.eleGroup[i].offsetTop<=that.screenHeight && that.eleGroup[i].getAttribute('data-original')){ that.eleGroup[i].style.backgroundImage ="url("+that.eleGroup[i].getAttribute('data-original')+")"; } } } LazyLoad.protot e416 ype.lazyLoad=function(tag){ var that = this; that.eleGroup = document.getElementsByTagName(tag); if(document.body.scrollTop == 0){ that.limitHeight=document.documentElement.scrollTop+document.documentElement.clientHeight; }else{ that.limitHeight=document.body.scrollTop+document.documentElement.clientHeight; } for(var i=0,j=that.eleGroup.length;i<j;i++){ if(that.eleGroup[i].offsetTop<=that.limitHeight && that.eleGroup[i].getAttribute('data-original')){ that.eleGroup[i].style.backgroundImage = "url("+that.eleGroup[i].getAttribute('data-original')+")"; } } } function extend(target, source) { for (var key in source) { target[key] = source[key]; } return target; } return LazyLoad; });
调用:
var myLazyLoad = new LazyLoad(); myLazyLoad.init('span'); window.onscroll=function(){ myLazyLoad.lazyLoad('span'); }
2),oop
js:
(function (name, definition) { if (typeof define === 'function') { define(definition); } else { this[name] = definition(); } })('LazyLoad', function () { /** * @LazyLoad this is for img-lazyload * @author huangzhao 2016/12/10 */ var LazyLoad = { base:{ eleGroup:null, // 懒加载元素组 eleTop:null, eleHeight:null, screenHeight:null, visibleHeight:null, scrollHeight:null, scrolloverHeight:null, limitHeight:null, oldOnscroll:null }, init:function(element){ // 初始化的时候加载图片 this.base.eleGroup = this.tagName(element); this.base.screenHeight = document.documentElement.clientHeight;//可视区域 this.base.scrolloverHeight = document.body.scrollTop; for(var i=0,j=this.base.eleGroup.length;i<j;i++){ if(this.base.eleGroup[i].offsetTop<=this.base.screenHeight && this.base.eleGroup[i].getAttribute('data-original')){ this.base.eleGroup[i].style.backgroundImage ="url("+this.base.eleGroup[i].getAttribute('data-original')+")"; } } console.log(this.base.eleGroup); }, tagName:function(tagName){// lazy的class return document.getElementsByClassName(tagName); }, addEvent:function(obj,type,func){// 兼容事件 if(obj.addEventListener){ obj.addEventListener(type,func,false); }else if(obj.attachEvent){ obj.attachEvent('on'+type,func); } }, lazyLoad:function(){// 懒加载 if(document.body.scrollTop == 0){ this.base.limitHeight=document.documentElement.scrollTop+document.documentElement.clientHeight; }else{ this.base.limitHeight=document.body.scrollTop+document.documentElement.clientHeight; } for(var i=0,j=this.base.eleGroup.length;i<j;i++){ if(this.base.eleGroup[i].offsetTop<=this.base.limitHeight && this.base.eleGroup[i].getAttribute('data-original')){ this.base.eleGroup[i].style.backgroundImage = "url("+this.base.eleGroup[i].getAttribute('data-original')+")"; } } } } return LazyLoad; });
调用:
LazyLoad.init('lazy'); window.onscroll = function(){ LazyLoad.lazyLoad(); }
相关文章推荐
- 关注电子商务网站开发-《简单易用的JQUERY插件--图片延时加载插件(lazyload)》
- [js开源组件开发]图片懒加载lazyload
- IOS开发之控件加载背景图片
- 快速开发框架Afinal的使用(数据库操作,HTTP请求,网络图片加载,控件绑定)
- 用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机
- 关注电子商务网站开发-《简单易用的JQUERY插件--图片延时加载插件(lazyload)》
- 快速开发框架Afinal的使用(数据库操作,HTTP请求,网络图片加载,控件绑定)
- jQuery 插件开发——LazyLoadImg(预加载和延迟加载图片)
- ASP.NET控件开发系列之图片切换web控件
- windows mobile开发中加载图片的几种方法比较
- 自主开发Delphi控件[1]: THSImageExButton图片按钮,3状态控制
- Elipse 插件开发中中加载图片的方法-1
- 动态加载图片路径 保持JavaScript控件的相对独立性
- JAVA GUI 开发---登录界面加载背景图片
- ASP.NET 控件开发系列之图片切换web控件
- C#发现之旅: WinForm.NET中开发具有固定背景图片的可滚动控件
- 动态加载图片路径 保持JavaScript控件的相对独立性
- SuperMap Objects开发——下载安装地址、许可配置和控件加载
- ImagesLazyLoad 图片延迟加载效果
- JAVA GUI 开发---界面加载背景图片