3

ピクチャ フォールバック ソリューションを jquery lazyload と組み合わせて使用​​する方法が少しわかりません。私はこのライブラリを使用します:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazyload/1.9.1/jquery.lazyload.min.js"></script>

現時点では、私の画像は次のように統合されています。

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

ただし、webp フォールバック ソリューションは次のように構成されています。

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

私の質問: 統合された遅延ロードが検索するdata-originalため、srcset では機能しません。その解決策はありますか?

可能であれば、別のライブラリを使用せず、コードを「単純に」追加したいと思います。

4

1 に答える 1

2

カスタム属性を使用して特定の形式でデータを追加する必要があります。このコードは完全に機能し、Web またはその他の形式の画像を追加するページの最適化に役立ちます。

:同じ名前のすべての形式の画像は、

  • image_1.png
  • image_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>

遅延読み込みが完全に機能するようになりました。

于 2019-03-17T08:20:01.603 に答える