Я создал меню переключения, используя vanilla javaScript , потому что я пытаюсь не использовать jQuery в качестве зависимости. Пока я добился успеха, но я хочу отключить видимость других элементов при нажатии и открытии содержимого меню.
HTML-код для разметки :
<div class="menu-link">Menu 1</div>
<p class="menu-content animated">Lorem ipsum dolor sit amet consectetur adipisicing elit. Sed quas odio facere sunt ullam quo ex amet sint in vitae.</p>
<br>
<div class="menu-link">Menu 2</div>
<p class="menu-content animated">Lorem ipsum dolor sit amet consectetur adipisicing elit. Sed quas odio facere sunt ullam quo ex amet sint in vitae.</p>
<br>
<div class="menu-link">Menu 3</div>
<p class="menu-content animated">Lorem ipsum dolor sit amet consectetur adipisicing elit. Sed quas odio facere sunt ullam quo ex amet sint in vitae.</p>
<br>
<div class="menu-link">Menu 4</div>
<p class="menu-content animated">Lorem ipsum dolor sit amet consectetur adipisicing elit. Sed quas odio facere sunt ullam quo ex amet sint in vitae.</p>
CSS-код для оформления эффекта включения / выключения содержимого меню:
menu-link {
display: inline-block;
cursor: pointer;
padding: 10px;
}
.menu-content {
display: none;
}
.show {
display: block;
-webkit-animation-name: show;
animation-name: show;
}
/* Show Animation */
@-webkit-keyframes show {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes show {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.animated {
-webkit-animation-duration: 1.3s;
animation-duration: 1.3s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
JavaScript-код для включения / выключения класса:
// var declaration
var menuLinks = document.querySelectorAll('.menu-link');
// Loop through the array & add a click event to toggle "show" class
for (var i = 0; i < menuLinks.length; i++ ) {
menuLinks[i].addEventListener('click', function() {
if(this.nextElementSibling.className.match("show") ) {
this.nextElementSibling.classList.remove("show");
} else {
this.nextElementSibling.classList.add("show");
}
});
};
Это jsfiddle пример