javascript - 渐进式加载代码片段不太了解

标签 javascript html css

我目前正致力于制作一个元素渐进式加载,以便让英雄横幅的加载更加流畅,我来自这个代码示例:

Codepen

我似乎无法理解的是如何将占位符图像切换为原始图像。

javascript 似乎根本没有引用原始图像? 那么它是如何渲染的呢?

我目前在使用 javascript 时出现白屏,这是有道理的,因为模糊的图像变得更加不透明 =1 =>

$(function(){

  $('.progressive-image').each(function(){

    var image = new Image();
    var previewImage = $(this).find('.loadingImage');
    var newImage = $(this).find('.overlay');

    image.onload = function(){
      newImage.css('background-image', 'url(' + image.src + ')');
      newImage.css('opacity', '1');
      console.log('complete');
    };

    image.src = previewImage.data('image');

  });

});

那么这个代码笔是如何混合原始图像和模糊图像的呢? newimage 找到的标签不包含图像?所以更困惑了?

最佳答案

这有点令人困惑,但代码实际上并没有删除旧图像。它将新图像插入到 <div class="overlay"></div> 中,它覆盖了 <div class="loadingImage"></div> 中的“正在加载”图像.

看看你的Elements检查器中的选项卡,您将能够看到这两个。

这是如何运作的?

更具体地说,该脚本从 data-image 中获取“全分辨率”图像 url loading-image 中的标签分区

<div 
  class="loadingImage"
  style="background: url('https://res.cloudinary.com/sourcetoad/image/upload/v1483582294/frog-2-sm_zjphps.jpg')"
  data-image="https://res.cloudinary.com/sourcetoad/image/upload/v1483582295/frog-2-lg_vahxhg.jpg">
</div>

它捕获了 data-image与:

image.src = previewImage.data('image');

然后它将它作为背景图像插入到 overlay 中股利:

newImage.css('background-image', 'url(' + image.src + ')');

关于javascript - 渐进式加载代码片段不太了解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53768660/

相关文章:

html - 如何在 CSS 中将 <li> 向右浮动?

javascript - AngularJS promise 未定义

javascript - 获取 iframe 中元素的 Y 位置

javascript - 输入类型 ="date"占位符 - 移动设备

image - 调整大小时背景图像不适合浏览器

html - 当我最小化或更改窗口时,我的网站尺寸出现问题

javascript - 如何获取表单提交按钮以保存到 localStorage

javascript - C# MVC5 ValidationMessageFor使用jquery datetimepicker抛出 "The field must be a date."

php - 如何清除 iFrame 的缓存?

javascript - Angular JS 和 Ionic - 从 ng-repeat 动态更改 img src