2016-07-28 11 views
0

私は、あなたがエリアにスクロールすると、gifが現れるウェブサイトを作成しています。それは一回だけループします。スクロールを続けると別のgifに変わります(1回だけ再生されます)。スクロールすると最初のgifに変わり、再開できるように再開します。gifを交換する際の「点滅」を避けるにはどうすればよいですか?

しかし、変更が発生すると、私は欲しくない点滅があります。ここにはfiddleがあります。そして、ここでjavascriptです:

$(window).ready(function() { 
    var v = 0; 

    $(window).on("scroll", function() { 
    var scrollTop = $(this).scrollTop(); 

    if (scrollTop > 100 && scrollTop < 200) { 

     if ($('#container').attr('data-img') != 'http://i.imgur.com/Hhmt8.gif') { 
     ++v; 
     $('#container').attr('data-img', 'http://i.imgur.com/Hhmt8.gif'); 
     $('#container').css('background-image', 'url(http://i.imgur.com/Hhmt8.gif?v=' + v + ')'); 
     } 

    } else if (scrollTop >= 200) { 

     if ($('#container').attr('data-img') != 'http://i.imgur.com/TUAwA.gif') { 
     ++v; 
     $('#container').attr('data-img', 'http://i.imgur.com/TUAwA.gif'); 
     $('#container').css('background-image', 'url(http://i.imgur.com/TUAwA.gif?v=' + v + ')'); 
     } 

    } else { 
     $('.imageHolder').css('background', 'blue'); 
    } 

    }); 

}); 

私はbackground-imageから?v='+v+'を削除しようとしたが、その後、それが変わるたびにロードされません...それは点滅せずにそのままの機能を維持する方法はありますか?

+1

プリロード...... –

+0

アニメーション化されません。最後のフレームが表示されます。この[fiddle](https://jsfiddle.net/lj_tang/qynvg44b/11/)と[this one](https://jsfiddle.net/qynvg44b/19/)を見ればわかります。そこにあなたは瞬きを持っていませんが、gifは一度しか発生しません – Caro

答えて

2

2番目のイメージを事前にロードします。点滅は、イメージのリモート取得時間から得られます。以前このウェブサイト上の任意の場所に同じ画像をプリロードしていた場合、新しい画像はブラウザのキャッシュから直接ロードされ、目に見える変化なしに前の画像に置き換えられます。

$(window).ready(function() { 
    var v = 0; 
    var image = new Image(); 
    image.src = 'http://i.imgur.com/TUAwA.gif'; 

    $(window).on("scroll", function() { 
     /* ... */ 
    } 

} 
+0

はい、キャッシュは前のものに置き換えられても、アニメーション化されません。画像はgifの最後のフレームになります。この[fiddle](https://jsfiddle.net/lj_tang/qynvg44b/11/)と[this one](https://jsfiddle.net/qynvg44b/19/)を見ればわかります。そこでは瞬きがありませんが、gifは一度だけ発生します – Caro

+0

変数からイメージを使用せず、前回と同じように、イメージをサーバーからフェッチするかのようにもう一度イメージをロードしてください。ブラウザはイメージをロードしてアニメーションを再生しますが、最初にネットワーク経由でフェッチする必要はありません。 – mch

+0

あなたが言ったように試してみるとうまくいきません... [こちら](https://jsfiddle.net/lj_tang/qynvg44b/20/)それでも点滅しています – Caro

関連する問題