全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

js实现图片加载淡入淡出效果

本文实例为大家分享了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实现图片淡入淡出效果  # 加载  # 这是  # 也会  # 你就  # 将其  # 要看  # 自定义  # 能看  # 哪种  # 会将  # 大家分享  # 用在  # 它不  # 而定  # 再加  # 具体内容  # 未完成  # 大家多多  # 越小  # 越少 


相关文章: 香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何快速登录WAP自助建站平台?  建站之星收费标准详解:套餐费用及年费价格表一览  如何通过智能用户系统一键生成高效建站方案?  ,南京靠谱的征婚网站?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  如何在服务器上配置二级域名建站?  如何获取PHP WAP自助建站系统源码?  c++ stringstream用法详解_c++字符串与数字转换利器  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  开封网站制作公司,网络用语开封是什么意思?  C#怎么创建控制台应用 C# Console App项目创建方法  家庭建站与云服务器建站,如何选择更优?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  建站之星安装失败:服务器环境不兼容?  如何撰写建站申请书?关键要点有哪些?  建站之星与建站宝盒如何选择最佳方案?  高防服务器如何保障网站安全无虞?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何通过虚拟主机空间快速建站?  如何通过IIS搭建网站并配置访问权限?  建站之星如何保障用户数据免受黑客入侵?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何通过商城自助建站源码实现零基础高效建站?  历史网站制作软件,华为如何找回被删除的网站?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  个人摄影网站制作流程,摄影爱好者都去什么网站?  建站主机是否等同于虚拟主机?  自助网站制作软件,个人如何自助建网站?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何在自有机房高效搭建专业网站?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  如何在西部数码注册域名并快速搭建网站?  视频网站制作教程,怎么样制作优酷网的小视频?  如何在搬瓦工VPS快速搭建网站?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  XML的“混合内容”是什么 怎么用DTD或XSD定义  定制建站模板如何实现SEO优化与智能系统配置?18字教程  如何在Tomcat中配置并部署网站项目?  Android自定义控件实现温度旋转按钮效果  建站之星下载版如何获取与安装?  如何快速生成凡客建站的专业级图册?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何快速查询网址的建站时间与历史轨迹? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。