jquery lazyload图像和带回退的webp

问题描述 投票:0回答:1

我有点困惑如何使用图片后备解决方案与jquery lazyload结合使用。

目前我的图像集成如下:

<img class="center lazy" data-original="./bilder/uebersetzung-marketing-bwl.png" width="593>

但是webp后备解决方案的结构如下:

<picture>
      <source srcset="./bilder/Uebersetzungsdienst-Jena-BM-Translations.webp" type="image/webp">
      <img class="imgWindowwidth refDesktop center" src="./bilder/Uebersetzungsdienst-Jena-BM-Translations.png" width="1920" height="97" alt="Uebersetzungsdienst-Jena-BM-Translations">
</picture>

我的问题:

  1. 我是否必须将样式/类提供给webp?
  2. 集成的lazyload查找data-original,因此它不适用于srcset。有解决方案吗?
performance lazy-loading webp jquery-lazyload
1个回答
0
投票

我找到了解决方案。需要使用自定义属性以特定格式添加数据。此代码完美地工作,并帮助您添加Web或其他格式图像的页面优化。

注意:所有格式图像的名称相同,如:

  • image_1.png
  • 图片_1。 JPG
  • image_1.webp

只需更改扩展而不是名称

<!-- Add this for show image  -->
<div class="lazy" data-name="image path1 without extension |image default extension (.png)|image alt tag|image classes"></div>
<div class="lazy" data-name="image path2 without extension |image default extension (.png)|image alt tag|image classes"></div>
<div class="lazy" data-name="image path3 without extension |image default extension (.png)|image alt tag|image classes"></div>

<!-- Add scripts in bottom  -->
<script>
function lazy_load(){
    $('.lazy').each(function(img){
        var scrollTop = window.pageYOffset;
        var this_offset=$(this).offset().top + $(this).outerHeight();
        var window_offset=$(window).scrollTop()+ $(window).height();
        if($(this).offset().top + $(this).outerHeight() <= ($(window).scrollTop()+ $(window).height())){
            var path_src=$(this).attr('data-name');
            var split_data=path_src.split('|');
            var img_html='<picture>'+
                '<source srcset="'+split_data[0]+'.webp" type="image/webp">'+
                '<source srcset="'+split_data[0]+split_data[1]+'" type="image/'+split_data[1].replace('.','')+'">'+
                '<img src="'+split_data[0]+split_data[1]+'" alt="'+split_data[2]+'" class="'+split_data[3]+'">'+
                '</picture>';
            $(this).html(img_html);
            $(this).show(1000);
            $(this).removeClass('lazy');
        }
    });
}
$(window).on('resize scroll', function(){
    lazy_load();
});
</script>

延迟加载现在工作得很好。

© www.soinside.com 2019 - 2024. All rights reserved.