Если я правильно понимаю вашу проблему, ваша navbar
. Если вам нужен эффект плавного перехода navbar
, необходимо fixed
положение. Ниже code
, а вот ручка . Я изменяю ваш HTML
код. Также я не использовал ваш код CSS
и JS
. Я не изменяю свойство CSS
, используя jQuery. Я использовал добавить и удалить class
.
HTML
<div class="wrapper">
<nav class="navbar" id="navbar">
<button id="navbarClose" class="close">x</button>
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="#">One</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Two</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Three</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Four</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Five</a>
</li>
</ul>
</nav>
<main class="main-wrapper" id="content">
<button class="btn btn-primary" id="toggleNavBar">Toggle</button>
<h1>Lorem Ipsum!</h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Asperiores, a? Quam fugit quos eligendi voluptatum temporibus, libero tempora aperiam error culpa amet, iure distinctio sequi, obcaecati consequuntur quae a enim!</p>
<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Incidunt eligendi ipsa labore dolorum qui accusamus magni cum maxime possimus iusto dolor tenetur minus nesciunt, ipsum autem assumenda, facere distinctio temporibus. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magnam nobis animi voluptas beatae. Pariatur iure, maxime fuga quam animi sapiente? Laborum voluptates similique neque qui! Dolore, et. Corporis, eveniet natus?</p>
</main>
</div>
CSS
body{
overflow: hidden;
}
.wrapper{
min-height: 100vh;
position: relative;
}
.navbar{
align-items: flex-start;
background-color: black;
height: 100%;
padding-bottom: 30px;
padding-top: 30px;
position: fixed;
transform: translateX(0);
transition: all 0.3s ease-in-out 0s;
width: 250px;
z-index: 1000;
}
@media (max-width: 767px){
.navbar{
transform: translateX(-100%);
width: 100%;
}
}
.navbar .close{
display: none;
font-size: 14px;
line-height: 1;
border-radius: 50%;
border: 2px solid red;
font-weight: normal;
opacity: 1;
color: white;
text-shadow: none;
height: 24px;
width: 24px;
position: absolute;
top: 10px;
right: 15px;
}
@media (max-width: 767px){
.navbar .close{
display: block;
}
}
.navbar.active{
transform: translateX(-100%);
}
@media (max-width: 767px){
.navbar.active{
transform: translateX(0);
}
}
.main-wrapper{
background-color: #f8f8f7;
min-height: 100vh;
padding: 30px 30px 30px 280px;
position: relative;
transition: all 0.3s ease-in-out 0s;
width: 100%;
}
@media (max-width: 767px){
.main-wrapper{
padding: 30px 15px;
}
}
.main-wrapper.active{
padding-left: 30px;
}
@media (max-width: 767px){
.main-wrapper.active{
padding-left: 15px;
}
}
JS
$(function(){
$('#toggleNavBar').on('click', function(){
$('#content').toggleClass('active');
$('#navbar').toggleClass('active');
});
$('#navbarClose').on('click', function(){
$('#content').toggleClass('active');
$('#navbar').toggleClass('active');
});
});
Примечание. Я использую bootstrap CSS для изменения стиля пользовательского агента браузера с помощью свойства normalize css .
Надеюсь, это поможет вам!