1

このリンクによると、lazyload は holder.js スクリプトに準拠するようになりました。

ここにjsFiddleがあります。3 番目の画像が他の画像と同じようにフェードインすることを期待しています。しかし、私はそれを機能させることができません。

誰かが私が間違っていることを教えてもらえますか?

前もって感謝します。

HTML :

<img data-src="holder.js/200x200/industrial" data-original="http://www.appelsiini.net/projects/lazyload/img/bmw_m1_hood.jpg" alt="BMW M1 Hood">
<img data-src="holder.js/200x200/industrial" data-original="http://www.appelsiini.net/projects/lazyload/img/bmw_m1_side.jpg" alt="BMW M1 Side">
<img data-src="holder.js/200x200/industrial" data-original="http://www.appelsiini.net/projects/lazyload/img/does-not-exist" alt="Viper 1">
<img data-src="holder.js/200x200/industrial" data-original="http://www.appelsiini.net/projects/lazyload/img/viper_corner.jpg" alt="Viper Corner">
<img data-src="holder.js/200x200/industrial" data-original="http://www.appelsiini.net/projects/lazyload/img/bmw_m3_gt.jpg" alt="BMW M3 GT">
<img data-src="holder.js/200x200/industrial" data-original="http://www.appelsiini.net/projects/lazyload/img/corvette_pitstop.jpg" alt="Corvette Pitstop">

JS:

$(function () {
    $("img").lazyload({
        effect: "fadeIn",
        effectspeed: 2000,
        skip_invisible: false
    });
});
4

1 に答える 1

1

「見つからない」プレースホルダーがフェードインしない理由は、lazyLoad のloadイベントが発生しないためです (その画像が存在しません)。読み込む画像の数を指定して手動でフェードインする必要があります: http://jsfiddle.net/zBuJV/2/

$(function () {
    var expectedImages = 5;
    var loadExpected = (function (totalImages, finishCallback) {
        var total = totalImages;
        var loaded = 0;
        return function () {
            loaded++;
            if (loaded >= total) {
                finishCallback();
            }
        }
    })(expectedImages, function () {
        $("img").fadeIn(2000);
    });

    $("img").lazyload({
        effect: "hide",
        effectspeed: 0,
        skip_invisible: false,
        load: function () {
            loadExpected();
        }
    });
});

lazyLoad はイベントを提供しないため、error不足している画像を遅延読み込みするのは簡単ではありません。ユーザーがスクロールしているときに遅延読み込みを行いたい場合は、スクロール スパイを追加して、そのスクロール位置に読み込まれることがわかっている画像と、その他の登録済み画像 (つまり、プレースホルダー) をフェードインする必要があります。

于 2014-06-13T14:51:51.563 に答える