iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >js如何实现图片加载淡入淡出效果
  • 624
分享到

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

2024-04-02 19:04:59 624人浏览 八月长安
摘要

这篇文章给大家分享的是有关js如何实现图片加载淡入淡出效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。HTML代码首先是图片标记的写法:<img data-sr

这篇文章给大家分享的是有关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如何实现图片加载淡入淡出效果”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: js如何实现图片加载淡入淡出效果

本文链接: https://www.lsjlt.com/news/66517.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • js如何实现图片加载淡入淡出效果
    这篇文章给大家分享的是有关js如何实现图片加载淡入淡出效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。HTML代码首先是图片标记的写法:<img data-sr...
    99+
    2024-04-02
  • js实现图片淡入淡出效果
    本文实例为大家分享了js实现图片淡入淡出的具体代码,供大家参考,具体内容如下 分析过程: 1.给最大父元素里添加多张图片,让第一张图片的透明度为1 opacity: 1 其余图片的透...
    99+
    2024-04-02
  • jQuery实现淡入淡出效果
    用jQuery完成淡入淡出效果前,我们先来认识几个代码: 淡入 fadeIn([ speed , [easing] , [fn] ]),参数都可不写 淡出 fade...
    99+
    2024-04-02
  • vue+js实现视频淡入淡出效果
    vue+js实现视频的淡入淡出,供大家参考,具体内容如下 一个简单的视频淡入淡出效果如图 小编直接上代码了有兴趣可以拷贝运行一下,谢谢 <template> &...
    99+
    2024-04-02
  • CSS实现淡入淡出图片效果的技巧和方法
    在网页设计中,图片的展示是非常重要的一部分。为了提升用户体验,我们经常会使用一些动态效果来增加页面的吸引力。其中,淡入淡出效果是一种常见且优雅的动画效果,可以让页面显得流畅和有活力。本文将介绍使用CSS实现淡入淡出图片效果的技巧和方法,并提...
    99+
    2023-10-21
    淡入淡出 CSS动画 图片效果
  • 如何为Vue路由添加淡入淡出效果
    随着Web应用程序的复杂性越来越高,前端框架的使用率也越来越高。Vue.js是当前最流行的JavaScript框架之一,它的路由功能能够使用户在应用程序中流畅地跳转。本文将为你介绍如何为Vue路由添加淡入淡出效果,以提高用户体验。Vue路由...
    99+
    2023-05-14
  • jQuery怎么实现淡入淡出效果
    这篇文章主要讲解了“jQuery怎么实现淡入淡出效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jQuery怎么实现淡入淡出效果”吧!用jQuery完成淡入淡出效果前,我们先来认识几个代码...
    99+
    2023-06-20
  • CSS过渡效果:如何实现元素的淡入淡出效果
    CSS过渡效果:如何实现元素的淡入淡出效果引言:在网页设计中,使元素具备过渡效果是提升用户体验的重要手段之一。而淡入淡出效果是一种常见而又简洁的过渡效果,能够使元素从无到有、由浅入深的显示。本文将介绍如何使用CSS来实现元素的淡入淡出效果,...
    99+
    2023-11-21
    CSS 过渡 淡入/淡出
  • CSS3怎么实现按钮淡入淡出效果
    这篇文章主要介绍了CSS3怎么实现按钮淡入淡出效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CSS3怎么实现按钮淡入淡出效果文章都会有所收获,下面我们一起来看看吧。 &n...
    99+
    2024-04-02
  • jQuery如何实现可兼容IE6的淡入淡出效果
    这篇文章主要为大家展示了“jQuery如何实现可兼容IE6的淡入淡出效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jQuery如何实现可兼容IE6的淡入淡出...
    99+
    2024-04-02
  • react如何实现淡入淡出
    这篇文章主要介绍“react如何实现淡入淡出”,在日常操作中,相信很多人在react如何实现淡入淡出问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react如何实现淡入淡出”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-04
  • css怎么实现淡入淡出动画效果
    要在CSS中实现淡入淡出动画效果,可以使用CSS的transition属性和opacity属性。首先,设置元素的初始透明度为0,即o...
    99+
    2023-08-08
    css
  • 怎么为Vue路由添加淡入淡出效果
    今天小编给大家分享一下怎么为Vue路由添加淡入淡出效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Vue路由基础在开始之前...
    99+
    2023-07-06
  • 如何制作淡入淡出效果的JQuery插件
    小编给大家分享一下如何制作淡入淡出效果的JQuery插件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!关键代码:function...
    99+
    2024-04-02
  • CSS过渡效果:如何实现元素的淡入淡出旋转效果
    CSS过渡效果:如何实现元素的淡入淡出旋转效果CSS过渡效果是一种用来控制元素状态改变时的动画效果,可以实现元素的平滑过渡。在本篇文章中,我将介绍如何使用CSS来实现元素的淡入淡出旋转效果,并提供具体的代码示例。首先,我们需要创建一个HTM...
    99+
    2023-11-21
    CSS 元素 过渡
  • jQuery如何实现淡入淡出的模态框
    这篇文章主要介绍了jQuery如何实现淡入淡出的模态框,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。HTML代码如下:固定格式就省略了<...
    99+
    2024-04-02
  • win7窗口淡入淡出特效如何关闭
    本篇内容介绍了“win7窗口淡入淡出特效如何关闭”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!win7窗口淡入淡出特效关闭教程首先右键点击“...
    99+
    2023-07-01
  • 如何用javascript实现不停淡入淡出
    这篇文章主要讲解了“如何用javascript实现不停淡入淡出”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用javascript实现不停淡入淡出”吧!...
    99+
    2024-04-02
  • jquery如何实现提示语淡入效果
    小编给大家分享一下jquery如何实现提示语淡入效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果图:示例代码:<!D...
    99+
    2024-04-02
  • CSS动画教程:手把手教你实现淡入淡出效果
    在网页设计和开发中,动画效果可以让页面更加生动和吸引人。而CSS动画是一种简单而且强大的方式来实现这种效果。本篇文章将手把手教你如何使用CSS来实现淡入淡出效果,并提供具体的代码示例供参考。一、淡入效果淡入效果是指元素从透明度为0逐渐变为透...
    99+
    2023-10-21
    CSS动画 淡入 淡出
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作