Прежде всего я должен сказать, что событие прокрутки - это быстро повторяющееся событие, когда пользователь использует колесико мыши или сенсорный слайд, поэтому вам не следует часто добавлять и удалять классы, не имеющие значения для каждого события прокрутки!Поэтому я добавил критерий в дополнение к позиции прокрутки, которая проверяет, был ли ранее установлен класс navbar
или navbar-alt
.
Для эффекта исчезновения цвета нет необходимости добавлять отдельный блок.Вы можете использовать CSS-переходы, чтобы при изменении класса стили отображались с помощью CSS-эффектов:
$(window).scroll(function(){
if ( $(this).scrollTop() > 80 && $('.navbar').hasClass("navbar") ) {
$('.navbar').removeClass('.navbar').addClass("navbar-alt");
$('.logo-ate').removeClass('.logo-ate').addClass("logo-ate-alt");
$('.links').removeClass('.links').addClass("links-alt");
$('.menu').removeClass('.menu').addClass("menu-alt");
}
if ( $(this).scrollTop() <= 80 && $('.navbar').hasClass("navbar-alt") ){
$('.navbar').removeClass("navbar-alt").addClass('.navbar');
$('.logo-ate').removeClass("logo-ate-alt").addClass('.logo-ate');
$('.links').removeClass("links-alt").addClass('.links');
$('.menu').removeClass("menu-alt").addClass('.menu');
}
});
.navbar {
height:80px;
background-color:#666666;
position:fixed;
top:0;left:0;
width:100%;
transition: background-color 1s ease;
}
.navbar-alt{
height:80px;
background-color:#00ff00;
position:fixed;
top:0;left:0;
width:100%;
transition: background-color 1s ease;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="navbar"> </div>
scroll down<br>
.<br>
.<br>
.<br>
.<br>
.<br>
.<br>
scroll down<br>
.<br>
.<br>
.<br>
.<br>
.<br>
.<br>
scroll down<br>
.<br>
.<br>
.<br>
.<br>
.<br>
.<br>
scroll down<br>
.<br>
.<br>
.<br>
.<br>
.<br>
.<br>
scroll down<br>
.<br>
.<br>
.<br>
.<br>
.<br>
.<br>
scroll down<br>
.<br>
.<br>
.<br>
.<br>
.<br>
.<br>
Now scroll up!<br>
.<br>
.<br>
.<br>
.<br>
.<br>
.<br>