2013-07-24 8 views
1

Я хочу изменить фиксированное положение navbar с абсолютного на относительное, когда прокручивает более 600 пикселей. У меня есть этот код:Navbar fixed top pos. абсолютное изменение на относительное при прокрутке

if (scroll >= 700) { 
    $(".navbar-fixed-top").addClass("navbar-scroll"); 
    } else { 
    $(".navbar-fixed-top").removeClass("navbar-scroll"); 
    } 
}); 

это работает, но я пытался изменить его анимировать (для перехода)

, и я сделал это:

if (scroll >= 700) { 
       $(".navbar-fixed-top").animate ({ 
     position: 'fixed' 
     }, "slow"); 
} else { 
       $(".navbar-fixed-top").animate ({ 
     position: 'absolute' 
     }, "slow"); 
} 
}); 

и это разве работает, Зачем?

+0

Я думаю, что начало сумы не хватает, пожалуйста, напишите полный код – maketest

ответ

0

Видя, как вы не можете анимировать свойство позиции, просто использовать абсолютное позиционирование и анимировать верхнее значение вместо этого.

Working Example

$(window).scroll(function() { 
    var scroll = $(window).scrollTop(); 
    if (scroll >= 700) { 
     $(".navbar-fixed-top").animate({ 
      top: scroll + 10 
     }, 50); 
    } else { 
     $(".navbar-fixed-top").animate({ 
      top: '10px' 
     },50); 
    } 
}); 
+0

Я не понимаю, в ур примере Navbar фиксируется сверху, пока свиток не 700px, а затем ива. Но я хочу прямо противоположное, я имею в виду, что navbar получает фиксированную вершину после 700 пикселей, прежде чем она вернется вверх (абсолютная, а не фиксированная). см. пример здесь: http://getflywheel.com/, scroll arround 800px, и вы увидите, что появляется навигационная панель – user2606561

+0

@ user2606561 жаль, что я перевернул оператора, увидев обновление – apaul

+0

, теперь он работает, спасибо! но как я могу изменить фоновый цвет navbar-fixed-top при прокрутке> = 700? p .: как я могу дать u +1? – user2606561

1

Вы не можете анимировать свойство CSS position, от API DOCS Jquery:

Все анимированные свойства должны быть анимированы одного числового значения, за исключением случаев, указанных ниже; Невозможно анимировать большинство свойств, которые не являются числовыми, используя базовую функциональность jQuery. (Например, ширина, высота или левая сторона может быть анимирована, но фоновый цвет не может быть, если не используется плагин jQuery.Color()). Значения свойств обрабатываются как количество пикселей, если не указано иное. Единицы em и% могут быть указаны там, где это применимо.

Смежные вопросы