У меня есть сайт, наполненный множеством текущих (зацикленных) javascript-анимаций, которые я хочу запускать только тогда, когда они появляются в окне просмотра, чтобы сохранить производительность.
Есть ли дешевый трюкдля достижения этого?идеи о том, как сохранить производительность в этом конкретном случае, очень приветствуются.
Я попробовал это так, но не работает.Возможно, потому что функция не запускается, когда triggerEffect
превращается true
:
var triggerEffect = false;
$(window).scroll(function(){
var wScroll = $(window).scrollTop(),
divTop = $('#effect-div').offset().top-$(window).height(),
divBottom = $('#effect-div').offset().top+$('#effect-div').height();
if (wScroll > divTop && wScroll < divBottom) {
triggerEffect = true;
} else {
triggerEffect = false;
}
});
$(document).ready(function loop() {
setTimeout( function () {
$("#effect-div").css("background-color", "blue")
setTimeout(function () {
$("#effect-div").css("background-color", "red")
}, 200);
if ( triggerEffect == true ) {
loop();
};
}, 400);
});
для полного кода (включая html и css), проверьте это на CODEPEN