为了账号安全,请及时绑定邮箱和手机立即绑定

多个图像加载动画不起作用

多个图像加载动画不起作用

qq_花开花谢_0 2022-05-26 17:16:04
我的 html 页面上有两个图像,我使用 jquery 在删除圆形加载器覆盖之前检查它们何时完全加载(每个图像单独)。因此,在开始时,每张图片上都会显示带有加载程序动画的叠加层,并且每次加载图片时都会关闭叠加层。但是使用我当前的代码,叠加层根本没有关闭。<div class="img" id="img1">    <div class="image-loader">        <div class="cssload-speeding-wheel"></div>    </div></div><div class="img" id="img2">    <div class="image-loader">        <div class="cssload-speeding-wheel"></div>    </div></div>$(document).ready(function(){    $('.img').each(function(){        let img = $(this).css('background-image').replace('url(','').replace(')','').replace(/\"/gi, "");        $('<img/>').attr('src', img).on('load', function() {            $('#' + $(this).attr('id') + ' .image-loader').hide();        });    });});该代码适用于单个图像:$(document).ready(function(){    let img = $('#img1').css('background-image').replace('url(','').replace(')','').replace(/\"/gi, "");    $('<img/>').attr('src', img).on('load', function() {        $('#img1 .image-loader').hide();    });});有人对此有解决方案吗?谢谢
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

this您的load函数内部指的是动态$('<img/>')元素。也是如此$(this).attr('id'),undefined并且没有一个装载机消失。


您需要在之前存储一个引用并使用它,如下所示:


$(document).ready(function() {

  $('.img').each(function() {

    let img = $(this).css('background-image').replace('url(', '').replace(')', '').replace(/\"/gi, "");

    let id = $(this).attr('id')

    $('<img/>').attr('src', img).on('load', function() {      

      $('#' + id + ' .image-loader').hide();

    });

  });

});

body {

  margin: 0

}


.view {

  height: 100vh;

  width: 100vw;

  background-color: blanchedalmond;

  display: grid;

  place-content: center;

}


.img {

  background-position: center center;

  background-size: cover;

  height: 50vh;

  width: 50vw;

}


#img1 {

  background-image: url('https://eoimages.gsfc.nasa.gov/images/imagerecords/73000/73751/world.topo.bathy.200407.3x5400x2700.jpg');

}


#img2 {

  background-image: url('https://edmullen.net/test/rc.jpg');

}


.image-loader {

  height: 100%;

  width: 100%;

  display: grid;

  justify-content: center;

  align-items: center;

  background-color: rgba(0, 0, 0, 0.7);

}


.cssload-speeding-wheel {

  width: 49px;

  height: 49px;

  margin: 0 auto;

  border: 5px solid rgba(255, 255, 255, 0.85);

  border-radius: 50%;

  border-left-color: transparent;

  border-right-color: transparent;

  animation: cssload-spin 800ms infinite linear;

  -o-animation: cssload-spin 800ms infinite linear;

  -ms-animation: cssload-spin 800ms infinite linear;

  -webkit-animation: cssload-spin 800ms infinite linear;

  -moz-animation: cssload-spin 800ms infinite linear;

}


@keyframes cssload-spin {

  100% {

    transform: rotate(360deg);

    transform: rotate(360deg);

  }

}


@-o-keyframes cssload-spin {

  100% {

    -o-transform: rotate(360deg);

    transform: rotate(360deg);

  }

}


@-ms-keyframes cssload-spin {

  100% {

    -ms-transform: rotate(360deg);

    transform: rotate(360deg);

  }

}


@-webkit-keyframes cssload-spin {

  100% {

    -webkit-transform: rotate(360deg);

    transform: rotate(360deg);

  }

}


@-moz-keyframes cssload-spin {

  100% {

    -moz-transform: rotate(360deg);

    transform: rotate(360deg);

  }

}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="view">


  <div class="img" id="img1">

    <div class="image-loader">

      <div class="cssload-speeding-wheel"></div>

    </div>

  </div>


  <div class="img" id="img2">

    <div class="image-loader">

      <div class="cssload-speeding-wheel"></div>

    </div>

  </div>


</div>


查看完整回答
反对 回复 2022-05-26
  • 1 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信