Skip to content

Instantly share code, notes, and snippets.

@zet777
Created February 27, 2019 11:39
Show Gist options
  • Save zet777/0652285b480e6eb257b5cd17ac9bc606 to your computer and use it in GitHub Desktop.
Save zet777/0652285b480e6eb257b5cd17ac9bc606 to your computer and use it in GitHub Desktop.
Скрытие и появление меню при скроле
.header {
position: fixed;
top: 0px;
}
$(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