原生js页面滚动延迟加载图片


Posted in Javascript onDecember 20, 2015

本文实例为大家讲解了javascript瀑布流代码,即js页面滚动延迟加载图片,分享给大家供大家参考,具体代码如下

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>原生Js页面滚动延迟加载图片</title>
<style type="text/css">
* 
{
 margin:0;
 padding:0
}
img.scrollLoading 
{
 border:1px solid #ccc;
 display:block;
 margin-top:10px;
}
</style>
</head>
<body>
<div id="content"></div>
</body>
</html>
<script type="text/javascript"> 
var _CalF = { 
 $:function(object){//选择器 
 if(object === undefined ) return; 
 var getArr = function(name,tagName,attr){ 
 var tagName = tagName || '*', 
 eles = document.getElementsByTagName(tagName), 
 clas = (typeof document.body.style.maxHeight === "undefined") ? "className" : "class";//ie6 
 attr = attr || clas, 
 Arr = []; 
 for(var i=0;i<eles.length;i++){ 
 if(eles[i].getAttribute(attr)==name){ 
 Arr.push(eles[i]); 
 } 
 } 
 return Arr; 
 }; 
 if(object.indexOf('#') === 0){ //#id 
 return document.getElementById(object.substring(1)); 
 }
 else if(object.indexOf('.') === 0){ //.class 
 return getArr(object.substring(1)); 
 }
 else if(object.match(/=/g)){ //attr=name
 return getArr(object.substring(object.search(/=/g)+1),null,object.substring(0,object.search(/=/g))); 
 }
 else if(object.match(/./g)){ //tagName.className 
 return getArr(object.split('.')[1],object.split('.')[0]); 
 } 
 }, 
 getPosition : function(obj) { //获取元素在页面里的位置和宽高 
 var top = 0, 
 left = 0, 
 width = obj.offsetWidth, 
 height = obj.offsetHeight; 
 while(obj.offsetParent){ 
 top += obj.offsetTop; 
 left += obj.offsetLeft; 
 obj = obj.offsetParent; 
 } 
 return {"top":top,"left":left,"width":width,"height":height}; 
 } 
}; 
 
//添加图片list 
var _temp = []; 
for (var i = 1; i < 21; i ++) { 
 _temp.push('<img class="scrollLoading" data-src="http://images.cnblogs.com/cnblogs_com/Darren_code/311197/o_' + i + '.jpg" src="http://images.cnitblog.com/blog/150659/201306/23160223-c81dd9aa9a2a4071a47b0ced2c9118bc.gif" /><br />图片' + i); 
} 
_CalF.$("#content").innerHTML = _temp.join(""); 
 
function scrollLoad(){ 
 this.init.apply(this, arguments); 
} 
scrollLoad.prototype ={ 
 init : function(className){ 
 var className = "img."+className, 
 imgs = _CalF.$(className), 
 that = this; 
 this.imgs = imgs; 
 that.loadImg(); 
 window.onscroll = function(){ 
 that.time = setTimeout(function(){ 
 that.loadImg(); 
 },400); 
 } 
}, 
loadImg : function(){ 
var imgs = this.imgs.reverse(), //获取数组翻转 
len = imgs.length; 
if(imgs.length===0){ 
 clearTimeout(this.time); 
 return; 
} 
for(var j=len-1;j>=0;j--){ //递减 
 var img = imgs[j], 
 imgTop = _CalF.getPosition(img).top, 
 imgSrc = img.getAttribute("data-src"), 
 offsetPage = window.pageYOffset ? window.pageYOffset : window.document.documentElement.scrollTop,//滚动条的top值 
 bodyHeight = document.documentElement.clientHeight; //body的高度 
 if((offsetPage+bodyHeight/2) > (imgTop-bodyHeight/2)){ 
 img.src = imgSrc; 
 this.imgs.splice(j,1); 
 } 
 } 
 } 
} 
 
var img1 = new scrollLoad("scrollLoading"); 
</script>

希望本文所述对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
JS 实现导航栏悬停效果(续)
Sep 24 Javascript
jquery中获取元素里某一特定子元素的代码
Dec 02 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
Mar 03 Javascript
Javascript中String的常用方法实例分析
Jun 13 Javascript
JavaScript  event对象整理及详细介绍
Oct 10 Javascript
老生常谈原生JS执行环境与作用域
Nov 22 Javascript
js仿百度音乐全选操作
Jan 13 Javascript
微信小程序左右滑动切换页面详解及实例代码
Feb 28 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
Dec 08 Javascript
浅谈vuejs实现数据驱动视图原理
Feb 23 Javascript
详解VSCode配置启动Vue项目
May 14 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
Sep 22 Javascript
javascript实现的网站访问量统计代码
Dec 20 #Javascript
js实现n秒倒计时后才可以点击的效果
Dec 20 #Javascript
图解js图片轮播效果
Dec 20 #Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
Dec 20 #Javascript
基于jquery实现页面滚动到底自动加载数据的功能
Dec 19 #Javascript
js点击按钮实现带遮罩层的弹出视频效果
Dec 19 #Javascript
js获取本机操作系统类型的两种方法
Dec 19 #Javascript
You might like
php session应用实例 登录验证
2009/03/16 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
Node.js 制作实时多人游戏框架
2015/01/08 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
详解Python 正则表达式模块
2018/11/05 Python
python实现两个字典合并,两个list合并
2019/12/02 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
python搜索算法原理及实例讲解
2020/11/18 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
美国浴缸、水槽和水龙头购物网站:Vintage Tub & Bath
2019/11/05 全球购物
新闻学毕业生自荐信
2013/11/15 职场文书
生物科学系大学生的自我评价
2013/12/20 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
党员自我评价范文2015
2015/03/03 职场文书
高中语文教材(文学文化常识大全一)
2019/08/13 职场文书
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript