js 图片懒加载
图片懒加载(图片出现在可视区域再加载)
兼容性:兼容目前流行的全部浏览器,包括:兼容到IE6)
使用方法:
引入相应的js文件
<script src="js/lazy.js"></script>初始化
Lazy.init(1000);
可以传入延时时间。默认是500ms
注意:
<img src="img/load.gif" data-lazy="img/2.jpg">
src 属性放预加载的图片,data-lazy放实际展示的图片
githut:https://github.com/chenjinxinlove/lazy
/**
* 兼容ie678不支持bind()办法
* */
if (!function() {}.bind) {
Function.prototype.bind = function(context) {
var self = this
, args = Array.prototype.slice.call(arguments); return function() {
return self.apply(context, args.slice(1));
}
};
} (function () {
var Lazy = function () { };
var _imgs = [],
_num = 0;
/**
* 得到元素相当于窗口的高度
* @param _e 出入元素
* @returns {_number} 返回高度
*/ Lazy.prototype._getEleViewHeight = function (_e) {
if(_e){
var _top = _e.offsetTop,
_c = _e.offsetParent;
while (_c !== null){
_top += _c.offsetTop;
_c = _c.offsetParent;
}
if( typeof window.pageYOffset !== 'undefined'){
return _top - window.pageYOffset;
}
else if(typeof document.compatMode !== 'undefined' && document.compatMode !== "BackCopt"){
return _top - document.documentElement.scrollTop;
}
else{
return _top - document.body.scrollTop;
}
} };
/**
* 得到浏览内窗口高度
* @returns {number}
* @private
*/
Lazy.prototype._getViewHeight = function () {
var _viewHeight = 0;
if( typeof window.innerHeight !== 'undefined' ){
_viewHeight = window.innerHeight;
}
else if(typeof document.compatMode !== 'undefined' && document.compatMode !== "BackCompt"){
_viewHeight = document.documentElement.clientHeight;
}
else{
_viewHeight = document.body.clientHeight;
}
return _viewHeight;
}; Lazy.prototype._getImg = function () {
var _i = document.getElementsByTagName("img");
for(var i = 0, len = _i.length; i < len; i++){
if(typeof (_i[i].getAttribute("data-lazy"))){
_imgs.push(_i[i]);
_num++;
}
}
}; /**
* 导入图片
* @private
*/
Lazy.prototype._loadImg = function () {
if(!_num)return;
var _viewHeihgt = this._getViewHeight();
for(var i = 0, len = _imgs.length; i < len; i++){
var _imgEle = _imgs[i];
if(this._getEleViewHeight(_imgEle) < _viewHeihgt){
_imgEle.src =_imgEle.getAttribute("data-lazy");
delete _imgs[i];
_num--;
}
}
}; /**
* 初始化,可以设置延时
*/
Lazy.prototype.init = function (time) {
this._getImg();
var _time = time || 500;
window.onscroll = window.onload = function () {
setTimeout(function () {
this._loadImg();
}.bind(this),_time);
}.bind(this); } window.Lazy = new Lazy(); })();
js 图片懒加载的更多相关文章
- JS图片懒加载
简介 当页面图片太多时,加载速度就会很慢.尤其是用2G/3G/4G访问页面,不仅页面慢,而且还会用掉很多流量.图片懒加载的原理就是将页面内所有需要加载的图片全部换成一张默认的图片(一般尺寸很小),只有 ...
- 【前端优化】js图片懒加载及优化
一.前言 为啥要对图片使用懒加载?我们首先来聊聊这个问题,对于页面来说架子啊速度影响着最大的就是图片,一张普通的图片可以达到4-5M的大小,而代码压缩也就只有几十KB.当页面图片过多的时候,页面加载速 ...
- js图片懒加载(滚动加载)是否生效
一.什么是懒加载? 对未出现在视野范围内的图片先不进行加载,等到出现在视野范围才去加载. 二.为什么使用懒加载? 懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数. 理论性知识大家都有自 ...
- js图片懒加载(滚动加载)判断是否生效
一.什么是懒加载? 对未出现在视野范围内的图片先不进行加载,等到出现在视野范围才去加载. 二.为什么使用懒加载? 懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数. 理论性知识大家都有自 ...
- web性能优化之js图片懒加载
html <div class="container"> <ul> <li> <div id="first" clas ...
- js——图片懒加载
<img class="js-lazy-image centered" src="./img/dog-running.svg" width="4 ...
- 原生js图片懒加载特效
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js原生图片懒加载 或 js原生图片预加载,html标签自定义属性
使用原声js来实现图片预加载,或图片懒加载,小伙伴们可以根据项目需要来结合vue或者是react来进行修改. 一.什么是图片懒加载或什么是图片预加载 当访问一个页面的时候,先把img元素或是其他元素的 ...
- jquery 图片懒加载
jquery 图片懒加载 CreationTime--2018年7月1日14点45分 Author:Marydon 1.源码展示 (function(a){a.fn.lazyload=functi ...
随机推荐
- 将文件系统数据库迁移到ASM中
使用裸设备配置ASM实例 http://www.cnblogs.com/myrunning/p/4270849.html 1.查看我们创建的磁盘组 [oracle@std ~]$ export ORA ...
- td内容过长,省略号表示
.word{ min-width:100px; max-width:200px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis ...
- Linux下一些有用的指令
1. 安装源代码包用到的configure 这用来定位安装位置. 用法: ./configure -prefix=<安装目录>, 前提是文件中有configure执行文件.
- Mac OS X 懒人版安装教程(之前的图全部挂了,所以重发了)
请版主把我之前发的那个帖子删了!因为所有的图全部挂了,所以麻烦版主了…… 安装中出现五国的话就请进入这里看看是那里的错误http://bbs.pcbeta.com/viewthread-863656- ...
- WordPress学习
1,WordPress安装 2,WordPress前台与后台 3,WordPress Post&Page. 4,WordPress多媒体 5,WordPress插件管理 上面5条已经掌握,明天 ...
- Java学习-043-获取文件在目录中的路径
我们在日常的电脑使用中,经常需要在当前目录或当期目录及其子目录中查找文件,并获取相应的文件路径名.在我们的自动化测试中,也经常需要确认文件在目录中是否成功生成或已存在,因而我写了一个小方法来实现. 获 ...
- request.getHeader所想到的
request.getHeader(""),简单的说就是获取请求的头部信息,根据http协议,它能获取到用户访问链接的信息. /** * Returns the value of ...
- iOS:一些常用的框架
一.更多框架请看链接: https://github.com/xiayuanquan/TimLiu-iOS http://www.cnblogs.com/XYQ-208910/p/5901012.ht ...
- 解决 Virtual Box 启动 Cannot load R0 module supLoadModule returned VERR_LDR_MISMATCH_NATIVE Failed to register ourselves as a PCI Bus (VERR_MODULE_NOT_FOUND)
返回 代码:E_FAIL (0x80004005)组件:Console界面:IConsole {8ab7c520-2442-4b66-8d74-4ff1e195d2b6} 原因: 我新建了一个vdi文 ...
- tcpip
netstat -anp | grep 8099 kill -9 8099 服务端端口状态 1.LISTENING状态 FTP服务启动后首先处于侦听(LISTENING)状态. 2.ESTABLISH ...