を色を変更するときに、私は、水平視差サイトを持っている、それが正常に動作しますが、私はそのようなスクロールの背景色を変更追加するとき:問題(凍結)、視差サイトにスクロール-X上
var tennis = $('.tennis');
var tennisDivs = {};
var tennisColors = {};
$.each(tennis, function (index, value) {
var color = $(value).data('color');
var name = $(value).data('name');
var left = $(this).offset().left;
if ($(value).data('name'))
tennisDivs[name] = left;
tennisColors[left] = color;
});
var scrollArea = $('#tennis-container .slides');
var tempPosition = 'Info';
scrollArea.scroll(function() {
var position = Math.floor($('#tennis-container .slides').scrollLeft());
$.each(tennisDivs, function (index, value) {
if ((value - 2300) <= position) {
currIndex = index;
}
});
if (tempPosition != currIndex) {
tempPosition = currIndex;
$('.slide__bg').attr('class','slide__bg').addClass('color-' + tempPosition);
}
});
CSS:HTML
.slide__bg {
transition: background-color 0.8s linear 0.3s;
}
.color-info, .color-stars,.basic-color {
background-color: #bdc1c6;
}
.color-courts {
background-color: #75695f;
}
:
<div id="tennis-container">
<div class="slides">
<div class="slide tennis-info info" id="tennis-info" data-name="Info" data-color="yellow">
<div class="slide__bg"></div>
<div class="slide__content"></div>
</div>
<div class="slide ...." id="..." data-name="..." data-color="...">
<div class="slide__bg"></div>
<div class="slide__content"></div>
</div>
<div class="slide ...." id="..." data-name="..." data-color="...">
<div class="slide__bg"></div>
<div class="slide__content"></div>
</div>
</div>
</div>
問題は、スクロールの際に色の変化で、サイトが開始ここに見られるように、数秒のための停止を凍結し、スクロール:
また、私はjQueryのanimate()
を使用して背景色を変更してみたが、何も変わりません。以下のような
修正:大きな画像をリサイズ
- 避けてください。
- 背景サイズのCSSプロパティを削除します。
これは、すべてのパフォーマンスの問題についてです...私のため
スクロール機能が最適化されていないため、jqueryで要素を取得するのに時間がかかりません。毎回DOMを通ることを防ぐために外部変数をクロージャーとして使用してみてください – MysterX
私はこの変数を使用しています - それは - tempPositionです。色は一度だけ変更されます...今、スクロール機能のすべてのjqueryセレクタに変数を設定しましたが、何も変わりません。 –
'$( '#tennis-container .slides')'の長さは何ですか? – MysterX