最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js實(shí)現(xiàn)圖片加載淡入淡出效果

 更新時(shí)間:2021年09月17日 09:20:08   作者:櫻花爛漫0927  
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)圖片加載淡入淡出效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了js圖片加載淡入淡出效果展示的具體代碼,供大家參考,具體內(nèi)容如下

HTML代碼

首先是圖片標(biāo)記的寫(xiě)法:

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

需要將圖片的地址放到 data-src 屬性里,而src值填寫(xiě)默認(rèn)的一張圖片。

CSS代碼

所有具有data-src屬性的圖片,我們將其初始顯示狀態(tài)為不可見(jiàn),通過(guò)透明度來(lái)調(diào)節(jié):

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

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

這樣寫(xiě)的作用是什么?等當(dāng)圖片加載時(shí),你就能看的效果了。

JavaScript代碼

我們最終會(huì)將 data-src 屬性去掉,換成src屬性,但這是圖片加載成功后的動(dòng)作:

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

相比起其它各種的圖片延遲加載技術(shù),這種方法非常的簡(jiǎn)單,它幾乎不要求其它任何條件,可以用在任何地方,使用起來(lái)非常靈活。

當(dāng)然,簡(jiǎn)單有簡(jiǎn)單的好壞,也會(huì)因?yàn)楹?jiǎn)單而不足。它不具有圖片圖片滾動(dòng)到可視窗口內(nèi)再加載的功能。最終使用哪種技術(shù),還是要看場(chǎng)景而定。

下面是lazyload.js

var lazyLoad = {
 init: function() {
  var that = this;
  that.onerrorImgUrl = "data-error"; //圖片加載失敗用什么圖片替換
  that.srcStore = "data-src"; //圖片真實(shí)地址存放的自定義屬性
  that.class = "lazy-img"; //惰性加載的圖片需要添加的class
  that.sensitivity = 50; //該值越小,惰性越強(qiáng)(加載越少)
  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) {
  // 其他標(biāo)準(zhǔn)瀏覽器使用dispatchEvent方法
  var evt = document.createEvent('HTMLEvents');
  // initEvent接受3個(gè)參數(shù):
  // 事件類型,是否冒泡,是否阻止瀏覽器的默認(rèn)行為
  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標(biāo)簽可見(jiàn)并且加載未完成
    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);
  })

 }
};

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript中捕獲與冒泡詳解及實(shí)例

    JavaScript中捕獲與冒泡詳解及實(shí)例

    這篇文章主要介紹了JavaScript中捕獲與阻止捕獲、冒泡與阻止冒泡詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • js中async函數(shù)結(jié)合promise的小案例淺析

    js中async函數(shù)結(jié)合promise的小案例淺析

    這篇文章主要介紹了js中async函數(shù)結(jié)合promise的小案例淺析,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • js遍歷map javaScript遍歷map的簡(jiǎn)單實(shí)現(xiàn)

    js遍歷map javaScript遍歷map的簡(jiǎn)單實(shí)現(xiàn)

    下面小編就為大家?guī)?lái)一篇js遍歷map javaScript遍歷map的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • 詳談js遍歷集合(Array,Map,Set)

    詳談js遍歷集合(Array,Map,Set)

    下面小編就為大家?guī)?lái)一篇詳談js遍歷集合(Array,Map,Set)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • javascript輕松控制表格列樣式的腳本代碼

    javascript輕松控制表格列樣式的腳本代碼

    javascript輕松控制表格列樣式的腳本代碼通過(guò)遍歷table表格元素并動(dòng)態(tài)設(shè)置其class屬性,實(shí)現(xiàn)表格樣式動(dòng)態(tài)控制的功能,需要的朋友可以參考一下
    2007-12-12
  • JS打斷點(diǎn)的六種常用姿勢(shì)你用過(guò)幾種

    JS打斷點(diǎn)的六種常用姿勢(shì)你用過(guò)幾種

    JS斷點(diǎn)調(diào)試,即是在瀏覽器開(kāi)發(fā)者工具中為JS代碼添加斷點(diǎn),讓JS執(zhí)行到某一特定位置停住,方便開(kāi)發(fā)者對(duì)該處代碼段的分析,這篇文章主要介紹了JS打斷點(diǎn)的六種常用姿勢(shì)的相關(guān)資料,需要的朋友可以參考下
    2025-04-04
  • JavaScript 實(shí)現(xiàn)鼠標(biāo)拖動(dòng)元素實(shí)例代碼

    JavaScript 實(shí)現(xiàn)鼠標(biāo)拖動(dòng)元素實(shí)例代碼

    這篇文章主要介紹了JavaScript 實(shí)現(xiàn)鼠標(biāo)拖動(dòng)元素實(shí)例代碼,需要的朋友可以參考下
    2014-02-02
  • js實(shí)現(xiàn)刷新頁(yè)面后回到記錄時(shí)滾動(dòng)條的位置【兩種方案可選】

    js實(shí)現(xiàn)刷新頁(yè)面后回到記錄時(shí)滾動(dòng)條的位置【兩種方案可選】

    本文主要介紹了頁(yè)面的div中有滾動(dòng)條,js實(shí)現(xiàn)刷新頁(yè)面后回到記錄時(shí)滾動(dòng)條的位置的兩種方案,需要的朋友可以看下
    2016-12-12
  • javascript運(yùn)行機(jī)制之執(zhí)行順序理解

    javascript運(yùn)行機(jī)制之執(zhí)行順序理解

    這篇文章主要介紹了javascript運(yùn)行機(jī)制之執(zhí)行順序理解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • JavaScript工具庫(kù)之Lodash詳解

    JavaScript工具庫(kù)之Lodash詳解

    這篇文章主要介紹了JavaScript工具庫(kù)之Lodash詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

集安市| 兴宁市| 济宁市| 万盛区| 阳春市| 隆林| 盐山县| 广丰县| 巍山| 凤阳县| 霍邱县| 新乡县| 邹城市| 乐至县| 和静县| 甘孜县| 怀集县| 前郭尔| 雅安市| 大新县| 绩溪县| 姜堰市| 阜平县| 新丰县| 平阴县| 新余市| 长海县| 府谷县| 黎川县| 咸阳市| 尖扎县| 广德县| 左云县| 宣威市| 永吉县| 惠水县| 临江市| 尉氏县| 寻甸| 鄂尔多斯市| 耒阳市|