jQueryで背景位置を変更することに問題があります。私が取り組んでいる Web サイト ( http://www.jeroenrood.nl/GortzFruit ) には、スクロール アニメーション (スクロール ホイールまたはアンカー クリックのいずれか) があり、背景の img タグの上部の位置はスクロールよりもゆっくりと変化します。速度。
これにより、Chrome と Firefox では滑らかな視差スクロール効果が作成されますが、Internet Explorer では作成されません。IE では (バージョンに関係なく)、この効果が頻繁に途切れます (前述のリンクで確認できます)。
これは、視差スクロール効果 (HTML) に関して、私が使用するコードです。
<div style='height:1000px;background-color:#333;position:relative;' id='page1'>
<img src='images/bg1.png' alt='' style='display:inline;position:absolute;top:-60px;left:0px;width:100%;z-index:0;' class='background' />
</div>
これは javascript/jQuery コードです。
var page1 = $('#page1').offset().top;
var windowHeight = $(window).height();
$(window).scroll(function(){
var scrollTop = $(window).scrollTop();
//if the first page is in the viewport
if((page1 <= (scrollTop+windowHeight))&&((page1+1000) >= scrollTop)){
newOffset = -60 + ((scrollTop - page1)*0.8);
$('#page1 .background').css('top',newOffset);
}
});
どういうわけかIEは画像のこの位置を処理して適用するのが遅れているようです。IE に Chrome や Firefox と同様のスムーズなスクロール効果を持たせる方法を知っている人はいますか?
前もって感謝します、
ジェローン
編集:
わかりました、私は解決策を見つけようとしています!
background-attachment:fixed を試しましたが、IE で途切れることはありませんでした。次に、この css を視差効果と組み合わせることができると考えました。IE のトランジションには途切れの原因となるギャップがあるため、background-attachment:fixed でそれらをブリッジできるかもしれません。
これはうまくいくようです!今では IE の流暢なアニメーションにもなっています。大規模な背景画像でも。
これはコードです(HTML):
<div style='height:1000px;background-color:#333;position:relative;text-align:center;' id='page1'>
<div class='background' style='display:inline;position:absolute;top:-60px;left:0px;height:1000px;width:2000px;z-index:0;background-image:url(images/bg1.png);background-repeat:no-repeat;background-position:left -60px;background-attachment:fixed;'></div>
</div>
そして、これは関連する javascript/jQuery コードです:
var page1 = $('#page1').offset().top;
var windowHeight = $(window).height();
$(window).scroll(function(){
var scrollTop = $(window).scrollTop();
//if the first page is in the viewport
if((page1 <= (scrollTop+windowHeight))&&((page1+1000) >= scrollTop)){
newOffset = "left "+ (-60 - ((scrollTop - page1)*0.2))+"px";
$('#page1 .background').css('background-position',newOffset);
}
});