Сворачивающееся при скролле меню
Задача: сделать меню, которое при скролле сворачивается в бургер. Попробовала сделать через JQuery и добавление/удаление классов. Код работает, но при перезагрузке страницы, если мы находимся не в самом её верху, примерно 1 раз из 5 меню пояляется открытым и снова скрывается, как только начинаем скроллить. Как это исправить? Нужно, чтобы открытым оно было только наверху.
<header class="header">
<div class="container">
<div class="header__body">
<a href="#" class="header__logo">
<img src="assets/img/logo_1.png" alt="">
</a>
<div class="header__burger">
<span></span>
</div>
<nav class="header__menu">
<ul class="header__list">
<li>
<a href="#" class="header__link active">Главная</a>
</li>
<li>
<a href="#" class="header__link">Карта</a>
</li>
<li>
<a href="#history" class="header__link">История</a>
</li>
<li>
<a href="#gallery" class="header__link">Галерея</a>
</li>
<li>
<a href="#shop" class="header__link">Айдентика</a>
</li>
<li>
<a href="#contacts" class="header__link">Контакты</a>
</li>
</ul>
</nav>
</div>
</div>
</header>
.header {
width: 100%;
position: fixed;
top: 0;
left: 0;
z-index: 1; }
.header:before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: transparent;
z-index: 2; }
.header__body {
position: relative;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
height: 114px;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center; }
.header__body.scroll {
-webkit-box-pack: end;
-ms-flex-pack: end;
justify-content: flex-end; }
.header__logo {
-webkit-box-flex: 0;
-ms-flex: 0 0 100px;
flex: 0 0 100px;
position: relative;
z-index: 3; }
.header__logo img {
max-width: 100%; }
.header__logo.hidden {
top: -100%; }
.header__burger {
display: none;
position: fixed;
width: 30px;
height: 20px;
z-index: 3; }
.header__burger:before, .header__burger:after {
content: '';
background-color: #fff;
position: absolute;
width: 100%;
height: 2px;
left: 0;
-webkit-transition: all 0.3s ease 0s;
transition: all 0.3s ease 0s;
-webkit-box-shadow: 0px 0px 5px rgba(145, 124, 125, 0.5), 5px 5px 10px rgba(222, 192, 193, 0.5);
box-shadow: 0px 0px 5px rgba(145, 124, 125, 0.5), 5px 5px 10px rgba(222, 192, 193, 0.5); }
.header__burger:before {
top: 0; }
.header__burger:after {
bottom: 0; }
.header__burger.work:before {
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
top: 9px; }
.header__burger.work:after {
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
bottom: 9px; }
.header__burger span {
background-color: #fff;
position: absolute;
width: 100%;
height: 2px;
left: 0;
top: 9px;
-webkit-transition: all 0.3s ease 0s;
transition: all 0.3s ease 0s;
-webkit-box-shadow: 0px 0px 5px rgba(145, 124, 125, 0.5), 5px 5px 10px rgba(222, 192, 193, 0.5);
box-shadow: 0px 0px 5px rgba(145, 124, 125, 0.5), 5px 5px 10px rgba(222, 192, 193, 0.5); }
.header__burger.work span {
-webkit-transform: scale(0);
transform: scale(0); }
.header__burger.sticky {
display: block; }
.header__menu.hidden {
top: -100%;
display: inline;
position: fixed;
right: 0;
height: 100%;
width: 30%;
overflow: auto;
background-color: rgba(97, 76, 77, 0.7);
padding: 120px 100px;
-webkit-transition: all 0.3s ease 0s;
transition: all 0.3s ease 0s; }
.header__menu.hidden .header__link.active {
font-weight: normal; }
.header__menu.work {
top: 0; }
.header__list {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
position: relative;
z-index: 2; }
.header__list.right {
display: block;
text-align: left; }
.header__list.right li {
margin: 0 0 20px 0; }
.header__link {
font-weight: 300;
font-size: 16px;
line-height: 22px;
color: #F2F2F2;
margin: 0 30px 0 30px;
-webkit-transition: text-shadow 0.5s;
transition: text-shadow 0.5s; }
.header__link:hover {
text-shadow: 0.5px 0px 0px #F2F2F2, -0.5px 0px 0px #F2F2F2; }
.header__link.active {
font-weight: 600; }
.header__link.big {
font-size: 24px; }
$(window).scroll(function () {
var height = $('.header__body').height();
if ($(this).scrollTop() > height ) {
$('.header__logo').addClass('hidden')
$('.header__menu').addClass('hidden');
$('.header__burger').addClass('sticky');
$('.header__body').addClass('scroll');
$('.header__list').addClass('right');
$('.header__link').addClass('big');
}
else {
$('.header__logo').removeClass('hidden');
$('.header__menu').removeClass('hidden');
$('.header__burger').removeClass('sticky');
$('.header__body').removeClass('scroll');
$('.header__list').removeClass('right');
$('.header__link').removeClass('big');
$('.header__burger,.header__menu').removeClass('work');
}
});