@sudden_man
bcvbcvbc

Почему медленно меняются классы?

Вот код:
$(window).scroll(function(){

    if ($(this).scrollTop() > 1){
        $(".top_panel").animate({height: "60px"}, 200);
        $(".logo_cont").animate({lineHeight: "60px"}, 200);
        $(".main_menu").animate({lineHeight: "60px"}, 200);
    }else{
        $(".top_panel").animate({height: "90px"}, 200);
        $(".logo_cont").animate({lineHeight: "90px"}, 200);
        $(".main_menu").animate({lineHeight: "90px"}, 200);
    }
    
});


Проблема в том, что когда листаю меню вниз - все хорошо, плавно меняется.
Но когда листаю вверх (обратно к началу страницы), то очень медленно меняется все.
И при чем, чем ниже долистал вниз, тем дольше меняется.
Помогите!
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
@reifter
Попробуй останавливать анимацию, перед началом новой

$(window).scroll(function(){

if ($(this).scrollTop() > 1){
$(".top_panel").stop().animate({height: "60px"}, 200);
$(".logo_cont").stop().animate({lineHeight: "60px"}, 200);
$(".main_menu").stop().animate({lineHeight: "60px"}, 200);
}else{
$(".top_panel").stop().animate({height: "90px"}, 200);
$(".logo_cont").stop().animate({lineHeight: "90px"}, 200);
$(".main_menu").stop().animate({lineHeight: "90px"}, 200);
}

});


А вообще, для оптимизации нужно запускать только один раз анимацию

var flagPosition=0;
$(window).scroll(function(){

if ($(this).scrollTop() > 1){
 if(flagPosition!=1) {
   flagPosition=1;
   $(".top_panel").stop().animate({height: "60px"}, 200);
   $(".logo_cont").stop().animate({lineHeight: "60px"}, 200);
   $(".main_menu").stop().animate({lineHeight: "60px"}, 200);
 }
} else {
 if(flagPosition!=0) {
  flagPosition=0;
  $(".top_panel").stop().animate({height: "90px"}, 200);
  $(".logo_cont").stop().animate({lineHeight: "90px"}, 200);
  $(".main_menu").stop().animate({lineHeight: "90px"}, 200);
 }
}

});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы