Swiper:使用`data-srcset` /`data-src`打破媒体条件

时间:2018-01-30 10:11:25

标签: swiper

设置Swiper进行延迟加载时,我们必须在图片代码上使用data-srcsetdata-src代替srcsetsrc(请参阅Documentation )。

<!-- Slider main container -->
<div class="swiper-container">
    <!-- Additional required wrapper -->
    <div class="swiper-wrapper">
        <!-- Slides -->
    <div class="swiper-slide">
          <img
            class="swiper-lazy"

            data-srcset="
                https://via.placeholder.com/400x200 400w,
                https://via.placeholder.com/800x400 800w,
                https://via.placeholder.com/1200x600 1200w,
                https://via.placeholder.com/1600x800 1600w,
                https://via.placeholder.com/2400x1200 2400w,
                "

            sizes="
                (max-width: 800px) 400px,
                (max-width: 1200px) 600px,
                (max-width: 1920px) 800px,
                1200px
            "
            data-src="https://via.placeholder.com/400x200" 
      >
      <div class="swiper-lazy-preloader"></div>
      </div> 

    </div>
    <!-- If we need pagination -->
    <div class="swiper-pagination"></div>

    <!-- If we need navigation buttons -->
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>

    <!-- If we need scrollbar -->
    <div class="swiper-scrollbar"></div>
</div>

预期行为

浏览器使用sizes中声明的媒体条件选择更高分辨率的图像。

问题

浏览器选择的分辨率高于声明但更早的分辨率。 看看这个Fiddle。 在我的示例中,媒体条件设置为width: 800pxwidth: 1200px,(...)。 但是,浏览器实际上使用width: 490pxwidth: 693px,(...)。

srcsetsrc有效,但......

我发现在图片标记上使用srcsetsrc会导致正确使用sizes中声明的媒体条件。但是我失去了延迟加载功能。看看这个Fiddle

这是一个错误还是我做错了什么? 我在Chrome v63上使用DevTools和禁用缓存进行了测试。 你可以重现吗?

0 个答案:

没有答案