Если вы не хотите уходить слишком далеко от того, что у вас уже есть, вы можете просто изменить то, что делает jQuery. И, как предложено выше Badru sh, используйте CSS transition
для анимации.
Скройте nav
с помощью CSS и переключайте имена классов, чтобы скрыть и показать. Подумайте над тем, чтобы дать элементу имя класса и выберите элемент с этим именем вместо имени тега. Ниже я назвал это .sidebar-nav
.
.sidebar-nav-trigger
может жить снаружи или внутри nav
. Если он внутри, вы захотите стилизовать / скрыть / показать '.sidebar-nav-items' вместо родительского элемента.
HTML
<a class="sidebar-nav-trigger">Menu</a>
<nav class="sidebar-nav hide">
<a class="sidebar-nav-trigger">Menu</a>
<div class="sidebar-nav-items">
<!-- nav items -->
</div>
</nav>
CSS
.sidebar-nav {}
.sidebar-nav.hide {
display: none;
}
.sidebar-nav.show {
display: block;
}
.sidebar-nav-trigger {}
jQuery
jQuery(document).ready(function ($) {
$sidebarNav = $('.sidebar-nav');
// Toggle the nav bar when clicking the nav-intersect icon.
$('.sidebar-nav__trigger').click(() => {
$sidebarNav.toggleClass('show').toggleClass('hide');
});
});
Есть много интересных вещей, которые вы могли бы сделать с переходом CSS. Для демонстрации ниже приведены стили, чтобы сделать его прозрачным и переместить его на 50% ширины. При необходимости измените.
CSS
.sidebar-nav {
transition: opacity 0.4s, transform 0.4s;
}
.sidebar-nav.hide {
pointer-events: none; /* "hides" it from mouse, a more modern technique than visibility: hidden; */
opacity: 0;
transform: translateX(50%);
}
.sidebar-nav.show {
pointer-events: auto;
opacity: 1;
transform: translateX(0);
}