原生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 相关文章推荐
点击广告后才能获得下载地址
Oct 26 Javascript
Javascript typeof 用法
Dec 28 Javascript
Extjs学习笔记之四 工具栏和菜单
Jan 07 Javascript
JScript中的条件注释详解
Apr 24 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
May 31 Javascript
AnjularJS中$scope和$rootScope的区别小结
Sep 18 Javascript
详解vuejs几种不同组件(页面)间传值的方式
Jun 01 Javascript
node.js微信小程序配置消息推送的实现
Feb 13 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
May 07 Javascript
不刷新网页就能链接新的js文件方法总结
Mar 01 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
简单聊聊TypeScript只读修饰符
Apr 06 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
sony ICF-2010 拆解与改装
2021/03/02 无线电
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
php中一个有意思的日期逻辑处理
2012/03/25 PHP
解析PHP生成静态html文件的三种方法
2013/06/18 PHP
解析php mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
php绘制一个扇形的方法
2015/01/24 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
2016/05/17 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
dropdownlist之间的互相联动实现(显示与隐藏)
2009/11/24 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
showModalDialog在谷歌浏览器下会返回Null的解决方法
2013/11/27 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
Python单体模式的几种常见实现方法详解
2017/07/28 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
python实现网页自动签到功能
2019/01/21 Python
python迭代器常见用法实例分析
2019/11/22 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
iPython pylab模式启动方式
2020/04/24 Python
曼城官方网上商店:Manchester City
2019/09/10 全球购物
腾讯广告词
2014/03/19 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
碧霞祠导游词
2015/02/09 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android