У меня есть <header>
, который в свою очередь содержит два div, как показано на следующем рисунке:
В верхней половине div A и в нижней половине div B. Ну,то, что я хочу сделать, это липкое меню, которое, когда верхняя часть нижнего div (красный) равна нулю, тогда весь заголовок имеет фиксированную позицию, скрывая верхний div (синий) с окном браузера.То есть: Это мой код:
$(document).ready(function(){
let smenu = $('.divB');
stickyMenu(smenu);
function stickyMenu(menu){
$(window).on('scroll', function(){
if($(this).scrollTop() > menu.offset().top) menu.addClass('menu-fixed');
else menu.removeClass('menu-fixed');
});
}
});
body {
height: 8000px;
}
header{
background-color: transparent;
width: 95%;
margin: auto;
overflow: hidden;
transform: translateY(20px);
}
header .divA{
width: 100%;
background-color: #FFF;
z-index: 1;
overflow: hidden;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
height: 40px;
width: 100%;
background-color: red;
}
header .divB{
width: 100%;
background-color: #FFF;
z-index: 1;
overflow: hidden;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
height: 40px;
width: 100%;
background-color: green;
}
/*This class is to "stick" the menu on the top*/
.menu-fixed{
position: fixed;
z-index: 999;
width: 100%;
top: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<header>
<div class="divA">
divA
</div>
<div class="divB">
divB
</div>
</header>
Проблема в том, что при выполнении прокрутки полный заголовок покидает окно (вверх) и застревает там, пока я не прокручиваю вниз.