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

本文实例为大家讲解了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=https://yunqi-tech.oss-cn-hangzhou.aliyuncs.com/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程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索js
加载图片
原生js实现滚动加载、javascript 延迟加载、javascript 滚动加载、滚动页面延迟加载内容、html5 滚动延迟加载,以便于您获取更多的相关知识。

时间: 2024-10-21 10:04:36

原生js页面滚动延迟加载图片_javascript技巧的相关文章

原生Js页面滚动延迟加载图片实现原理及过程_javascript技巧

原理和过程 1.页面滚动加载事件 2.获取元素在页面里的top值 根据滚动条的位置 判断何时显示图片 3.获取元素集合 加载过的图片从集合里删除 效果预览:http://jsfiddle.net/dtdxrk/SkYNq/embedded/result/ 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html

js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)_javascript技巧

本文实例讲述了js实现的鼠标滚轮滚动切换页面效果的方法.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html> <html> <head> <title>wheel</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <script type=

原生js编写焦点图效果_javascript技巧

自己用原生js写的简单焦点图,算是对原生js初步运用. html部分 <div class="focusPicture"> <section class="mPhoto" id="mPhoto"> <img src="images/20161021/b_5809b93b66d18.jpg"/> </section><!-- 主要的大图 --> <section

利用css+原生js制作简单的钟表_javascript技巧

利用css+原生js制作简单的钟表.效果如下所示   实现该效果,分三大块:html.javascript.css html部分html部分比较简单,定义一个clock的div,内部有原点.时分秒针.日期以及时间,至于钟表上的刻度.数字等元素,因为量比较多,采用jvascript生成  <!doctype html> <html> <head> <meta charset="UTF-8"> <link rel='stylesheet

老生常谈原生JS执行环境与作用域_javascript技巧

首先,我们要知道执行环境和作用域是两个完全不同的概念. 函数的每次调用都有与之紧密相关的作用域和执行环境.从根本上来说,作用域是基于函数的,而执行环境是基于对象的(例如:全局执行环境即window对象). 换句话说,作用域涉及到所被调用函数中的变量访问,并且不同的调用场景是不一样的.执行环境始终是this关键字的值,它是拥有当前所执行代码的对象的引用.每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中.虽然我们编写的代码无法访问这个对象,但解析器在处理数据时会在

原生js实现tab选项卡切换_javascript技巧

本文实例为大家分享了原生js实现tab选项卡切换效果的代码,供大家参考,具体内容如下 1.html部分  <body> <div id="tab"> <div class="tab_menu"> <ul> <li class="selected"><a href="#">时事</a></li> <li><a hre

原生JS:Date对象全面解析_javascript技巧

Date对象:基于1970年1月1日(世界标准时间)起的毫秒数 本文参考MDN做的详细整理,方便大家参考MDN 构造函数: 1.new Date(); 依据系统设置的当前时间来创建一个Date对象. 2.new Date(value); value代表自1970年1月1日00:00:00 (世界标准时间) 起经过的毫秒数. 3.new Date(dateString); dateString表示日期的字符串值.该字符串应该能被 Date.parse() 方法识别(符合 IETF-complian

原生JS实现网络彩票投注效果_javascript技巧

个人游戏之作,小伙伴们研究下就好 主要功能: 1.可自由选择投注模式.倍数,可点击'×'删除提交注单. 2.可使用jsonp引用官方彩票开奖数据(实时开奖). 3.结合后台可实现官彩同样的效果. 实现原理: 单纯使用Js实现,这里主要用数组存放数据,随机生成开奖号码,然后进行判断是否中奖. 下面是完整JS代码: index.html <!doctype html> <html lang="en"> <head> <meta charset=&q

为原生js Array增加each方法_javascript技巧

复制代码 代码如下: Array.prototype.each = function(fn) { return this.length ? [fn(this.slice(0,1))].concat(this.slice(1).each(fn)) : []; }; [1,2,3,4].each(function(x){ document.write(x + "<br/>"); });