设置Swiper进行延迟加载时,我们必须在图片代码上使用data-srcset
和data-src
代替srcset
和src
(请参阅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: 800px
,width: 1200px
,(...)。
但是,浏览器实际上使用width: 490px
,width: 693px
,(...)。
srcset
和src
有效,但...... 我发现在图片标记上使用srcset
和src
会导致正确使用sizes
中声明的媒体条件。但是我失去了延迟加载功能。看看这个Fiddle。
这是一个错误还是我做错了什么? 我在Chrome v63上使用DevTools和禁用缓存进行了测试。 你可以重现吗?