使用 lazysizes 延迟加载背景图像

Lazyload background-image with lazysizes

我想用库 http://afarkas.github.io/lazysizes/
加载背景图像 "lazy" 他们确实提到可以延迟加载 "anything" 。但是整个文档就是那个:

<div data-ride="carousel" data-script="assets/js/bootstrap.min.js" class="carousel lazyload">
    <!-- widget content -->
<div>

而且我不知道如何将其用于背景图像。有人有这方面的经验吗?

要使用 lazysizes 加载背景图像,请使用 data-bg 属性

import "lazysizes/plugins/unveilhooks/ls.unveilhooks";

用法示例:

<div class="lazyload" data-bg="/path/to/image.jpg"></div>

如果要加载图像作为背景,请遵循此 doc。 这是lazysizes

的插件

如前所述,您需要添加一些插件才能做到这一点。 这是我用于所有项目的配置。

所需的 lazysizes 插件:

您可以通过这种方式设置自定义断点

window.lazySizesConfig = window.lazySizesConfig || {};
window.lazySizesConfig.customMedia = {
    '--small'   : '(max-width: 576px)',
    '--medium'  : '(max-width: 768px)'
};

这里是标记

<div class="lazyload" data-bgset="URL-OF-SMALL-IMAGE[--small] URL-OF-MEDIUM-IMAGE[--medium] | URL-OF-FULL-SIZE-IMAGE", data-sizes="auto")

如果你想使用lazyload加载背景图片只需要添加一小段代码(无需添加任何插件)-

//add simple support for background images:
document.addEventListener('lazybeforeunveil', function(e){
    var bg = e.target.getAttribute('data-bg');
    if(bg){
        e.target.style.backgroundImage = 'url(' + bg + ')';
    }
});

可能有人会觉得这很有用。就我而言,使用相同的库 - "lazysizes" 我不得不将 data-bg 更改为 data-bgset:

<div class="lazyload" data-bgset=""></div>

验证 Lazyload 的版本。

适用于此的版本:

<div class="lazy" data-bg="/path/to/image.jpg"></div>

是:

<script src="https://cdn.jsdelivr.net/npm/vanilla-lazyload@17.6.1/dist/lazyload.min.js"></script>

ps: 别忘了插话

var lazyLoadInstance = new LazyLoad({
  elements_selector: ".lazy",
  load_delay: 100,
  effect : "fadeIn"
  // ... more custom settings?
  });