JS实现图片延迟加载并淡入淡出效果的简单方法


Posted in Javascript onAugust 25, 2016

话不多说,直接看示例

首先是图片标记的写法

<img data-src="/images/image.jpg" alt="">

需要将图片的地址放到 data-src 属性里,而src值不需要,直接将src属性去掉。

CSS代码

所有具有data-src属性的图片,我们将其初始显示状态为不可见,通过透明度来调节:

img {
 opacity: 1;
 transition: opacity 0.3s;
}

img[data-src] {
 opacity: 0;
}

这样写的作用是什么?等当图片加载时,你就能看的效果了。

JavaScript代码

我们最终会将 data-src 属性去掉,换成src属性,但这是图片加载成功后的动作:

[].forEach.call(document.querySelectorAll('img[data-src]'), function(img) {
 img.setAttribute('src', img.getAttribute('data-src'));
 img.onload = function() {
 img.removeAttribute('data-src');
 };
});

相比起其它各种的图片延迟加载技术,这种方法非常的简单,它几乎不要求其它任何条件,可以用在任何地方,使用起来非常灵活。

但是要注意的是,简单有简单的好坏,也会因为简单而不足。它不具有图片图片滚动到可视窗口内再加载的功能。最终使用哪种技术,还是要看场景而定。

以上就是本文的全部内容,希望对大家的工作和学习能有所帮助。

Javascript 相关文章推荐
在浏览器中获取当前执行的脚本文件名的代码
Jul 19 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
Sep 15 Javascript
基于jQuery实现网页进度显示插件
Mar 04 Javascript
JS基于递归实现倒计时效果的方法
Nov 26 Javascript
jsTree使用记录实例
Dec 01 Javascript
vue.js学习之递归组件
Dec 13 Javascript
详解vue表单验证组件 v-verify-plugin
Apr 19 Javascript
React Native之TextInput组件解析示例
Aug 22 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
Jan 03 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
Sep 07 Javascript
vue自定义指令实现方法详解
Feb 11 Javascript
vue+AI智能机器人回复功能实现
Jul 16 Javascript
JavaScript中闭包之浅析解读(必看篇)
Aug 25 #Javascript
jquery点击切换背景色的简单实例
Aug 25 #Javascript
浅析Javascript ES6中的原生Promise
Aug 25 #Javascript
微信JS接口大全
Aug 25 #Javascript
JS解决iframe之间通信和自适应高度的问题
Aug 24 #Javascript
浅析Javascript ES6新增值比较函数Object.is
Aug 24 #Javascript
js图片上传前预览功能(兼容所有浏览器)
Aug 24 #Javascript
You might like
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
javascript实现仿百度图片的瀑布流加载效果
2016/04/20 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
jquery获取transform里的值实现方法
2017/12/12 jQuery
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
Vuex实现简单购物车
2021/01/10 Vue.js
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
python匿名函数的使用方法解析
2019/10/10 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
python filecmp.dircmp实现递归比对两个目录的方法
2020/05/22 Python
简述python Scrapy框架
2020/08/17 Python
python time()的实例用法
2020/11/03 Python
金蝶的一道SQL笔试题
2012/12/18 面试题
转让协议书范本
2014/04/15 职场文书
难忘的一课教学反思
2014/04/30 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
幼儿园教学反思范文
2016/03/02 职场文书
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL