本文实例为大家分享了js图片加载淡入淡出效果展示的具体代码,供大家参考,具体内容如下

HTML代码
首先是图片标记的写法:
<img data-src="/path/to/image.jpg" alt="">
需要将图片的地址放到 data-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');
};
});
相比起其它各种的图片延迟加载技术,这种方法非常的简单,它几乎不要求其它任何条件,可以用在任何地方,使用起来非常灵活。
当然,简单有简单的好坏,也会因为简单而不足。它不具有图片图片滚动到可视窗口内再加载的功能。最终使用哪种技术,还是要看场景而定。
下面是lazyload.js
var lazyLoad = {
init: function() {
var that = this;
that.onerrorImgUrl = "data-error"; //图片加载失败用什么图片替换
that.srcStore = "data-src"; //图片真实地址存放的自定义属性
that.class = "lazy-img"; //惰性加载的图片需要添加的class
that.sensitivity = 50; //该值越小,惰性越强(加载越少)
minScroll = 5,
slowScrollTime = 200;
document.addEventListener("scroll", function() {
that.changeimg();
});
setTimeout(function() {
that.trigger();
}, 100);
},
scanImage: function() {
var that = this;
var imgList = [];
var allimg = [].slice.call(document.querySelectorAll('img.' + that.class + ''));
allimg.forEach(function(ele) {
if (!that.isLoadedImageCompleted(ele)) {
imgList.push(ele);
}
});
that.imglistArr = imgList;
},
isLoadedImageCompleted: function(ele) {
return (ele.getAttribute('data-loaded') == '1')
},
trigger: function() {
var that = this;
eventType = that.isPhone && "touchend" || "scroll";
that.fireEvent(document, eventType);
//$(window).trigger(eventType);
},
fireEvent: function(element, event) {
// 其他标准浏览器使用dispatchEvent方法
var evt = document.createEvent('HTMLEvents');
// initEvent接受3个参数:
// 事件类型,是否冒泡,是否阻止浏览器的默认行为
evt.initEvent(event, true, true);
return !element.dispatchEvent(evt);
},
changeimg: function() {
function loadYesOrno(img) {
var windowPageYOffset = window.pageYOffset,
windowPageYOffsetAddHeight = windowPageYOffset + window.innerHeight,
imgOffsetTop = img.getBoundingClientRect().top + window.pageYOffset;
return imgOffsetTop >= windowPageYOffset && imgOffsetTop - that.sensitivity <= windowPageYOffsetAddHeight;
}
function loadImg(img, index) {
var imgUrl = img.getAttribute(that.srcStore);
img.setAttribute("src", imgUrl);
img.onload || (img.onload = function() {
img.classList.remove(that.class);
img.setAttribute('data-loaded', 1)
img.removeAttribute('data-src');
//$(this).removeClass(that.class).getAttribute('data-loaded',1),
that.imglistArr[index] = null;
img.onerror = img.onload = null;
},
img.onerror = function() {
img.src = img.getAttribute(that.onerrorImgUrl);
img.classList.remove(that.class);
img.classList.add("lazy-err");
img.setAttribute('data-loaded', 0);
//$(this).removeClass(that.class).getAttribute('data-loaded',0),
that.imglistArr[index] = null,
img.onerror = img.onload = null
});
var newImgStack = [];
that.imglistArr.forEach(function(ele) {
//img标签可见并且加载未完成
if (!that.isLoadedImageCompleted(ele)) {
newImgStack.push(ele);
}
});
that.imglistArr = newImgStack;
}
var that = this;
that.scanImage();
that.imglistArr.forEach(function(val, index) {
if (!val) return;
var img = val;
if (!loadYesOrno(img) || that.isLoadedImageCompleted(img)) return;
if (!img.getAttribute(that.srcStore)) return;
loadImg(img, index);
})
}
};
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# 图片加载
# 淡入淡出
# 原生js和jquery实现图片轮播淡入淡出效果
# js如何实现淡入淡出效果
# 原生js实现fadein 和 fadeout淡入淡出效果
# js实现图片淡入淡出切换简易效果
# js淡入淡出的图片轮播效果代码分享
# js控制淡入淡出示例代码
# JS实现图片延迟加载并淡入淡出效果的简单方法
# js实现淡入淡出轮播切换功能
# js运动框架_包括图片的淡入淡出效果
# js实现图片淡入淡出效果
# 加载
# 这是
# 也会
# 你就
# 将其
# 要看
# 自定义
# 能看
# 哪种
# 会将
# 大家分享
# 用在
# 它不
# 而定
# 再加
# 具体内容
# 未完成
# 大家多多
# 越小
# 越少
相关文章:
太原网站制作公司有哪些,网约车营运证查询官网?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
成都网站制作报价公司,成都工业用气开户费用?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
建站之星安装后界面空白如何解决?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
C++如何编写函数模板?(泛型编程入门)
宝塔建站教程:一键部署配置流程与SEO优化实战指南
建站主机与服务器功能差异如何区分?
如何在云主机快速搭建网站站点?
如何用PHP工具快速搭建高效网站?
如何通过二级域名建站提升品牌影响力?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
微信h5制作网站有哪些,免费微信H5页面制作工具?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
Android使用GridView实现日历的简单功能
小型网站建站如何选择虚拟主机?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
如何在IIS中新建站点并配置端口与IP地址?
如何高效生成建站之星成品网站源码?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
网站微信制作软件,如何制作微信链接?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
建站之星官网登录失败?如何快速解决?
建站之星安装需要哪些步骤及注意事项?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
南平网站制作公司,2025年南平市事业单位报名时间?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
宝塔建站无法访问?如何排查配置与端口问题?
如何撰写建站申请书?关键要点有哪些?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
创业网站制作流程,创业网站可靠吗?
建站之星导航如何优化提升用户体验?
建站之星如何助力网站排名飙升?揭秘高效技巧
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
网站制作软件有哪些,制图软件有哪些?
如何在宝塔面板中创建新站点?
建站之家VIP精选网站模板与SEO优化教程整合指南
海南网站制作公司有哪些,海口网是哪家的?
,想在网上投简历,哪几个网站比较好?
建站ABC备案流程中有哪些关键注意事项?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
制作网站公司那家好,网络公司是做什么的?
*请认真填写需求信息,我们会在24小时内与您取得联系。