Created
February 27, 2019 11:39
-
-
Save zet777/0652285b480e6eb257b5cd17ac9bc606 to your computer and use it in GitHub Desktop.
Скрытие и появление меню при скроле
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.header { | |
position: fixed; | |
top: 0px; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$(document).ready(function() { | |
var header = $(".header"); // Меню | |
var scrollPrev = 0 // Предыдущее значение скролла | |
$(window).scroll(function() { | |
var scrolled = $(window).scrollTop(); // Высота скролла в px | |
var firstScrollUp = false; // Параметр начала сколла вверх | |
var firstScrollDown = false; // Параметр начала сколла вниз | |
// Если скроллим | |
if ( scrolled > 0 ) { | |
// Если текущее значение скролла > предыдущего, т.е. скроллим вниз | |
if ( scrolled > scrollPrev ) { | |
firstScrollUp = false; // Обнуляем параметр начала скролла вверх | |
// Если меню видно | |
if ( scrolled < header.height() + header.offset().top ) { | |
// Если только начали скроллить вниз | |
if ( firstScrollDown === false ) { | |
var topPosition = header.offset().top; // Фиксируем текущую позицию меню | |
header.css({ | |
"top": topPosition + "px" | |
}); | |
firstScrollDown = true; | |
} | |
// Позиционируем меню абсолютно | |
header.css({ | |
"position": "absolute" | |
}); | |
// Если меню НЕ видно | |
} else { | |
// Позиционируем меню фиксированно вне экрана | |
header.css({ | |
"position": "fixed", | |
"top": "-" + header.height() + "px" | |
}); | |
} | |
// Если текущее значение скролла < предыдущего, т.е. скроллим вверх | |
} else { | |
firstScrollDown = false; // Обнуляем параметр начала скролла вниз | |
// Если меню не видно | |
if ( scrolled > header.offset().top ) { | |
// Если только начали скроллить вверх | |
if ( firstScrollUp === false ) { | |
var topPosition = header.offset().top; // Фиксируем текущую позицию меню | |
header.css({ | |
"top": topPosition + "px" | |
}); | |
firstScrollUp = true; | |
} | |
// Позиционируем меню абсолютно | |
header.css({ | |
"position": "absolute" | |
}); | |
} else { | |
// Убираем все стили | |
header.removeAttr("style"); | |
} | |
} | |
// Присваеваем текущее значение скролла предыдущему | |
scrollPrev = scrolled; | |
} | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment