web性能优化之js图片懒加载
html
<div class="container">
<ul>
<li>
<div id="first" class="pic"><img src="" alt="" trueimg="./img/HBuilder.png" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000001</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000002</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000003</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000004</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000005</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000006</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000007</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000008</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000009</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000010</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000011</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000012</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000013</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000014</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000015</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000016</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000017</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000018</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000019</div>
</li>
<li>
<div class="pic"><img src="" alt="" trueimg="./img/timg.jpg" /></div>
<div class="txt">0000000000000000000000000000000000000000000000000000000000000000000020</div>
</li>
</ul>
</div>
css
* {
margin:;
padding:;
box-sizing: border-box;
}
li {
margin-top: 10px;
border-bottom: 1px solid #000;
list-style: none;
height: 100px;
}
.pic {
width: 200px;
padding: 10px;
height: 100px;
float: left;
background: url(img/timg.gif) no-repeat center center;
background-size: cover;
background-origin: content-box;
}
.pic img {
opacity:;
display: none;
border: 1px solid #000;
width: 100%;
height: 100%;
}
li:last-child {
margin-bottom: 10px;
}
.txt {
height: 100px;
line-height: 100px;
overflow: hidden;
}
js
var imgList = document.querySelectorAll("img");
var len = imgList.length;
function loadImg(curImg) {
var truesrc = curImg.getAttribute("trueimg");
var oImg = new Image();
var curPar = curImg.parentNode;
oImg.src = truesrc;
oImg.onload = function() {
curImg.src = this.src;
curImg.style.display = "block";
curPar.style.background = "none";
fadeIn(curImg);
oImg = null;
}
curImg.isLoaded = true;
}
function fadeIn(curImg) {
var tar = 1;
var interval = 10;
var duration = 500;
var step = (tar / duration) * interval;
var curOp = parseFloat(getComputedStyle(curImg, null)["opacity"]);
var timer = window.setInterval(function() {
if(curOp > 1) {
curImg.style.opacity = 1;
window.clearInterval(timer);
}
curOp += step;
curImg.style.opacity = curOp;
}, interval);
}
function handleImg() {
for(var i = 0; i < len; i++) {
var curImg = imgList[i];
if(curImg.isLoaded) {
continue;
}
var curPar = curImg.parentNode;
var a = curPar.clientHeight + curPar.offsetTop;
var b = document.documentElement.clientHeight + document.documentElement.scrollTop;
if(a < b) {
loadImg(curImg);
}
}
}
setTimeout(handleImg, 1000);
window.onscroll = handleImg;
设置定时器延迟加载图片,优化网站打开时间,当图片出现在可见范围就加载图片,否则就不加载。
web性能优化之js图片懒加载的更多相关文章
- 【前端优化】js图片懒加载及优化
一.前言 为啥要对图片使用懒加载?我们首先来聊聊这个问题,对于页面来说架子啊速度影响着最大的就是图片,一张普通的图片可以达到4-5M的大小,而代码压缩也就只有几十KB.当页面图片过多的时候,页面加载速 ...
- 抛砖引玉:探讨网站性能优化之Javascript异步懒加载技术
懒加载技术是现在许多大型网站的都使用的提高网站性能的方式,它的核心思想是当用户想看页面某个区域时,再加载该区域的数据.这在一定程度上减轻了服务器端的压力,也加快了页面的呈现速度. 其实国内很多网站都用 ...
- JS图片懒加载
简介 当页面图片太多时,加载速度就会很慢.尤其是用2G/3G/4G访问页面,不仅页面慢,而且还会用掉很多流量.图片懒加载的原理就是将页面内所有需要加载的图片全部换成一张默认的图片(一般尺寸很小),只有 ...
- js 图片懒加载
图片懒加载(图片出现在可视区域再加载) 兼容性:兼容目前流行的全部浏览器,包括:兼容到IE6) 使用方法: 引入相应的js文件<script src="js/lazy.js" ...
- js图片懒加载(滚动加载)是否生效
一.什么是懒加载? 对未出现在视野范围内的图片先不进行加载,等到出现在视野范围才去加载. 二.为什么使用懒加载? 懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数. 理论性知识大家都有自 ...
- js图片懒加载(滚动加载)判断是否生效
一.什么是懒加载? 对未出现在视野范围内的图片先不进行加载,等到出现在视野范围才去加载. 二.为什么使用懒加载? 懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数. 理论性知识大家都有自 ...
- 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元素或是其他元素的 ...
随机推荐
- Android Studio快捷键设置之实现原eclipse中ctrl+m的全屏的效果
如下图,keymap设置成eclipse的的,但是鼠标双击最大化复原没有,ctr+M全屏也没有, 那么久在如下图的三个项目上添加鼠标双击和快捷键---自己方便好用,但不冲突的 Toggle full ...
- 解题:HEOI 2012 采花
题面 题外话:LYD说他当时看错题了,考场爆零了,然后有了作诗这道题=.= 离线处理询问,按右端点递增排序,然后对于每种花$flw[i]$,我们求一个$pre[flw[i]]$表示这种花上一次出现的位 ...
- 音视频处理之FFmpeg+SDL+MFC视频播放器20180411
一.FFmpeg+SDL+MFC视频播放器 1.MFC知识 1).创建MFC工程的方法 打开VC++ 文件->新建->项目->MFC应用程序 应用程序类型->基于对话框 取消勾 ...
- javascript实现div的显示和隐藏
http://www.cnblogs.com/oec2003/archive/2007/05/05/736492.html <html> <head> <meta htt ...
- 利用ansible来做kubernetes 1.10.3集群高可用的一键部署
请读者务必保持环境一致 安装过程中需要下载所需系统包,请务必使所有节点连上互联网. 本次安装的集群节点信息 实验环境:VMware的虚拟机 IP地址 主机名 CPU 内存 192.168.77.133 ...
- mysqldump参数详细说明(转)
Mysqldump参数大全(参数来源于mysql5.5.19源码) 参数 参数说明 --all-databases , -A 导出全部数据库. mysqldump -uroot -p --al ...
- Docker管理工具-Swarm
一.Swarm介绍 Swarm是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理Docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机.Swarm使用标准的Doc ...
- Docker应用二:docker常用命令介绍
Docker常用命令使用介绍 docker中常用的命令: 1.docker search image_name:搜查镜像 2.docker pull image_name:从镜像库中拉去镜像 3.d ...
- P2243 电路维修
P2243 电路维修 题目背景 Elf 是来自Gliese 星球的少女,由于偶然的原因漂流到了地球上.在她无依无靠的时候,善良的运输队员Mark 和James 收留了她.Elf 很感谢Mark和Jam ...
- P3097 [USACO13DEC]最优挤奶Optimal Milking
P3097 [USACO13DEC]最优挤奶Optimal Milking 题意简述:给定n个点排成一排,每个点有一个点权,多次改变某个点的点权并将最大点独立集计入答案,输出最终的答案 感谢@zht4 ...