jQuery实现图片懒加载
来源:互联网 发布:雷锋的故事动画片知乎 编辑:程序博客网 时间:2024/06/07 02:36
本文给出一种利用jQuery实现图片懒加载的原理。它的基本思想是:在输出HTML的时候,不要直接输出<img src="xxx"
,而是输出如下的img
标签:
<img src="/static/loading.gif" data-src="http://真正的图片地址/xxx.jpg">
// 注意: 需要引入jQuery和underscore$(function() { // 获取window的引用: var $window = $(window); // 获取包含data-src属性的img,并以jQuery对象存入数组: var lazyImgs = _.map($('img[data-src]').get(), function (i) { return $(i); }); // 定义事件函数: var onScroll = function() { // 获取页面滚动的高度: var wtop = $window.scrollTop(); // 判断是否还有未加载的img: if (lazyImgs.length > 0) { // 获取可视区域高度: var wheight = $window.height(); // 存放待删除的索引: var loadedIndex = []; // 循环处理数组的每个img元素: _.each(lazyImgs, function ($i, index) { // 判断是否在可视范围内: if ($i.offset().top - wtop < wheight) { // 设置src属性: $i.attr('src', $i.attr('data-src')); // 添加到待删除数组: loadedIndex.unshift(index); } }); // 删除已处理的对象: _.each(loadedIndex, function (index) { lazyImgs.splice(index, 1); }); } }; // 绑定事件: $window.scroll(onScroll); // 手动触发一次: onScroll();
onScroll()
函数最后要手动触发一次,因为页面显示时,并未触发scroll事件。如果图片已经在可视区域内,这些图片仍然是loading状态,需要手动触发一次,就可以正常显示。
如_.each报错,改成 $.each 后正常;
阅读全文
0 0
- jQuery实现图片懒加载
- Jquery 实现图片懒加载
- jQuery实现图片懒加载
- JQuery.LazyLoad 实现图片懒加载
- jquery.lazyload.js实现图片懒加载
- jquery.lazyload.js 实现图片懒加载
- 用jquery实现图片的懒加载
- jquery.lazyload.js实现图片懒加载
- jQuery实现图片预加载
- jQuery实现图片延迟加载
- jquery实现 图片延迟加载
- jQuery实现图片延迟加载
- jquery实现 图片延迟加载
- jQuery实现图片延迟加载
- jQuery实现图片延迟加载
- jQuery实现图片延迟加载
- JQuery实现Ajax加载图片
- jquery实现图片延时加载
- 【Scikit-Learn 中文文档】2 使用 scikit-learn 介绍机器学习 | ApacheCN
- angular js 综合 循环死数据 全选/反选 过滤 批量删除 提交数据(判断空值) 排序
- 添加任意学生的提交页面
- aar与source.jar,aar文件jar文件区别,以及Android.mk如何引用aar文件和jar文件
- Android必学之AsyncTask
- jQuery实现图片懒加载
- 多个mapreduce工作相互依赖
- CodeChef:Chef and Subarray Queries(线段树)
- 关于BeanUtils.copyProperties的用法和优缺点
- HDU 1114 Piggy-Bank
- Retrofit+多线程下载
- Codeforces 246E Blood Cousins Return 树上启发式合并
- 51nod 1107 斜率小于0的连线数量 树状数组
- SSM框架整合(IntelliJ IDEA + maven + Spring + SpringMVC + MyBatis)