jQuery实现图片懒加载
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>jquery 实现懒加载</title>
<style>
ul,
li {
list-style: none;
}
.container {
width: 800px;
margin: 0 auto;
}
.container li {
float: left;
margin: 10px 10px;
}
.container li img {
width: 340px;
height: 260px;
}
</style>
</head>
<body>
<ul class="container">
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/1.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/2.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/3.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/4.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/5.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/6.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/7.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/8.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/9.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/10.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/11.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/12.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/13.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/14.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/15.jpg" />
</a>
</li>
<li>
<a href="#">
<img src="" data-src="http://cdn.jirengu.com/book.jirengu.com/img/16.jpg" />
</a>
</li>
</ul>
</body>
//引入jquery
<script src="https://code.jquery.com/jquery-3.0.0.min.js"></script>
<script>
//监听文档是否有触发滚动事件
$(document).on('scroll', function () {
$(".container img").each(function () {
// 判断是否是在可视区域内 并且 判断lodingimg($(this))是否有加载过 如果加载过就不执行此步骤 要不就会再次执行
if (showhide($(this)) && !lodingimg($(this))) {
voluation($(this)) //把自定义的 data-src 赋值给img中的src属性
}
})
})
// 判断图片是否需要加的必要条件
function showhide(img) {
var scrolltop = $(document).scrollTop() //获取浏览器卷去的部分
var browser = document.documentElement.clientHeight; //获取浏览器中的可视区域
var offsettop = img.offset().top; //获取图片距离顶部的距离
var imgheight = img.height() //获取图片元素的高度
// 从上往下加载图片 判断 如果图片的距离 > 浏览器卷去的部分 && 图片距离 < 卷去的部分 + 浏览器的可视区域
// 从下往上加载图片 或者 图片距离 < 卷去的部分 && 图片距离 > 卷去的高度 - 图片自身的高度(边界条件)
if (offsettop > scrolltop && offsettop < (scrolltop + browser) || offsettop < scrolltop && offsettop > (scrolltop - imgheight)) {
return true
}
return false
}
// 把自定义的 data-src 赋值给img中的src属性
function voluation(img) {
return img.attr('src', img.attr('data-src'))
}
// 用于判断是否有加载
function lodingimg(img) {
return img.attr('data-src') === img.attr('src')
}
// 首次渲染 如果不提前执行一次页面图片显示空白 必须滚动才能够加载
$(".container img").each(function () {
onecarry($(this))
})
// 首次执行此函数
function onecarry(img) {
var scrolltop = $(document).scrollTop()
var browser = document.documentElement.clientHeight; //获取浏览器中的可视区域
var offsettop = img.offset().top;
var imgheight = img.height()
if (offsettop > scrolltop && offsettop < (scrolltop + browser) || offsettop < scrolltop && offsettop > (scrolltop - imgheight)) {
voluation(img)
}
}
</script>
</html>
jQuery实现图片懒加载的更多相关文章
- 使用jQuery实现图片懒加载原理
原文:https://www.liaoxuefeng.com/article/00151045553343934ba3bb4ed684623b1bf00488231d88d000 在网页中,常常需要用 ...
- jQuery的图片懒加载
jQuery的图片懒加载 function imgLazyLoad(options) { var settings = { Id: $('img'), threshold: 100, effectsp ...
- jQuery.imgLazyLoad图片懒加载组件
一.前言 当一个页面中请求的图片过多,而且图片太大,页面访问的速度是非常慢的,对用户的体验非常不友好:使用图片懒加载,可以减轻服务器的压力,增加页面的访问量,这里主要是总结一下我自己写的图片懒加载组件 ...
- jQuery插件图片懒加载lazyload
来自XXX的前言: 什么是ImageLazyLoad技术 在页面上图片比较多的时候,打开一张页面必然引起与服务器大数据量的 交互.尤其是对于高清晰的图片,占的几M的空间.ImageLazyLoad技术 ...
- jquery <img> 图片懒加载 和 标签如果没有加载出图片或没有图片,就显示默认的图片
参考链接:http://www.jq22.com/jquery-info390 或压缩包下载地址:链接:http://pan.baidu.com/s/1hsj8ZWw 密码:4a7s 下面是没有 ...
- 基于jquery的图片懒加载js
function lazyload(option){ var settings={ defObj:null, defHeight: }; settings=$.extend(settings,opti ...
- [jQuery插件]手写一个图片懒加载实现
教你做图片懒加载插件 那一年 那一年,我还年轻 刚接手一个ASP.NET MVC 的 web 项目, (C#/jQuery/Bootstrap) 并没有做 web 的经验,没有预留学习时间, (作为项 ...
- 前端实现图片懒加载(lazyload)的两种方式
在实际的项目开发中,我们通常会遇见这样的场景:一个页面有很多图片,而首屏出现的图片大概就一两张,那么我们还要一次性把所有图片都加载出来吗?显然这是愚蠢的,不仅影响页面渲染速度,还浪费带宽.这也就是们通 ...
- jquery实现简单瀑布流布局(续):图片懒加载
# jquery实现简单瀑布流布局(续):图片懒加载 这篇文章是jquery实现简单瀑布流布局思想的小小扩展.代码基于前作的代码继续完善. 图片懒加载就是符合某些条件时才触发图片的加载.最常见的具体表 ...
随机推荐
- 51nod 1423 最大二“货” 单调栈
利用单调栈,高效求出每个区间内的最大值和次大值的亦或值. 先正向扫描,利用单调递减栈,若当前栈为空栈,则直接压入栈中,若为非空栈,弹出栈顶元素,每弹出一个元素,则求一次亦或值,保留最大值 接着进行反向 ...
- underscore用法大全
1._.find函数 var one = _.find(all, function (item) { return item.C_ID == selected; }); $('#C_NAME').va ...
- LNMP下安装Pureftpd开启FTP服务以及修改FTP端口的方法
LNMP 环境包 1.2 内置了 Pureftpd 的安装程序. 安装 Pureftpd 进入lnmp解压后的目录,执行:./pureftpd.sh 会显示如下图: 按提示输入当前MySQL的root ...
- eclipse解决maven编码UTF-8的不可映射字符
1.同时指定<project.build.sourceEncoding>属性和<encoding>的方式可适用于Maven2和Maven3. 2.在Maven3中可以只增加&l ...
- vue源码分析之new Vue过程
实例化构造函数 从这里可以看出new Vue实际上是使vue构造函数实例化,然后调用_init方法 _init方法,该方法在 src/core/instance/init.js 中定义 Vue.pro ...
- windows下的node环境搭建
node环境的搭建过程: 1.首先在nodejs.org官网上下载一个msi安装文件,安装(过程很简单,基本上是一路next) 2.安装完成后,简单测试下是否安装成功,在cmd下输入两个命令: nod ...
- Eclipse Oxygen.2 Release (4.7.2)添加JUnit
在project节点上右击,Build Path->Add Libraries->JUnit
- Swift 使用 日常笔记
//------------------- var totalPrice: Int = { willSet(newTotalPrice) { //参数使用new+变量名且变量名首地址大写 printl ...
- numpy的array合并-【老鱼学numpy】
概述 本节主要讲述如何把两个数组按照行或列进行合并. 按行进行上下合并 例如: import numpy as np a = np.array([1, 1, 1]) b = np.array([2, ...
- matplotlib柱状图-【老鱼学matplotlib】
柱状图在平常的图表中是非常常用的图,本节我们来看下如何来显示柱状图. 代码为: import numpy as np import pandas as pd import matplotlib.pyp ...