lazy-loading - 如何在光滑 slider 中延迟加载图片元素?

标签 lazy-loading slick.js webp

Ken Wheelers 光滑的 slider 非常适合 jpeg 等普通图片。 为了提高加载性能,我尝试使用图片元素来支持带有后备功能的 webp。 data-lazy 属性仅适用于 img 标签。 有没有延迟加载 webp 图像的解决方案?

<div id="slick-slider">
   <div class="item">
      <picture >
         <source srcset="{{ bild }}.webp" type="image/webp">
         <img class="img-fluid" alt="bild 1" data-lazy="{{ bild }}.jpg">
      </picture>
  </div>
  <div class="item">
      <picture >
         <source srcset="{{ bild }}.webp" type="image/webp">
         <img class="img-fluid" alt="bild 2" data-lazy="{{ bild }}.jpg">
      </picture>
  </div>
</div>

最佳答案

光滑的 slider 仅支持图像标签,但我们可以添加一些自定义代码来延迟加载图片标签的图像。

图片标签片段

<picture>
  <source media="(min-width:650px)" data-lazy="img_pink_flowers.jpg">
  <source media="(min-width:465px)" data-lazy="img_white_flower.jpg">
  <img data-lazy="img_orange_flowers.jpg" alt="Flowers" style="width:auto;">
</picture>

用于延迟加载的 jQuery:

$('.slider-selector').slick({
    lazyLoad: 'ondemand',
    slidesToShow: 1,
    slidesToScroll: 1,
    infinite: false,
    dots: true,
    arrows: false,
});

$(document).on('beforeChange', '.slider-selector', function(event, slick, currentSlide, nextSlide){
    var nextSlide = slick.$slides.get(nextSlide);
    var $slideSoureSets = $(nextSlide).find('source');
    $($slideSoureSets).each(function () {
        $(this).attr('srcset', $(this).data('lazy'));
    });
        console.log(nextSlide);
  });

关于lazy-loading - 如何在光滑 slider 中延迟加载图片元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65790504/

相关文章:

jQuery 延迟加载 : Call a Javascript function after image was lazy loaded

产品构建后找不到 Angular 2\4 Assets 路径文件

jquery - Slick Slider - 在初始化 slider 之前隐藏其他幻灯片

jquery - 放大和重新定位光滑 slider 的箭头

imagemagick - 在 WHM 专用服务器上将 WebP 添加到 ImageMagick 支持的 PHP 7.3 格式

lazy-loading - Doctrine ArrayCollection

jquery - 光滑的轮播不会调整大小

video - 视频标签中 WebP 海报的后备,如何?

javascript - 使用JS将webp转换为jpeg

javascript - 使用延迟加载禁用图像的默认灯箱