原生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 相关文章推荐
Array对象方法参考
Oct 03 Javascript
jQuery取得select选择的文本与值的示例
Dec 09 Javascript
Javascript中call和apply函数的比较和使用实例
Feb 03 Javascript
jquery自定义右键菜单、全选、不连续选择
Mar 01 Javascript
快速解决js开发下拉框中blur与click冲突
Oct 10 Javascript
JSONP跨域请求
Mar 02 Javascript
AngularJS入门教程一:路由用法初探
May 27 Javascript
Node.js连接Sql Server 2008及数据层封装详解
Aug 27 Javascript
vue swipe自定义组件实现轮播效果
Jul 03 Javascript
Vue3新特性之在Composition API中使用CSS Modules
Jul 13 Javascript
antd table按表格里的日期去排序操作
Nov 17 Javascript
jQuery实现本地存储
Dec 22 jQuery
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实现Linux服务器木马排查及加固功能
2014/12/29 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
js创建元素(节点)示例
2014/01/02 Javascript
js中直接声明一个对象的方法
2014/08/10 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
jquery延迟对象解析
2016/10/26 Javascript
原生js实现验证码功能
2017/03/16 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
JS浏览器BOM常见操作实例详解
2020/04/27 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
Python模块包中__init__.py文件功能分析
2016/06/14 Python
Python科学画图代码分享
2017/11/29 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
python实现感知机线性分类模型示例代码
2019/06/02 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
写好自荐信要注意的问题
2013/11/10 职场文书
应用数学自荐书范文
2013/11/24 职场文书
房产销售经理职责
2013/12/20 职场文书
生日派对邀请函
2014/01/13 职场文书
应届毕业生通用的自荐书范文
2014/02/07 职场文书
《姥姥的剪纸》教学反思
2014/02/25 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers