Class using:
<a class="btn-menu-mobile" href="javascript:;">
<span></span>
<span></span>
<span></span>
</a>
<div class="t-mobile-menu">
<div class="m-menu__title">
<div class="title">Menu</div>
<a href="javascript:;" class="m-menu-close">+</a>
</div>
<ul>
<li class="has-submenu">
<a href="#sub1">Tin tức</a>
<span class="btn-toggle-sub"></span>
<ul class="sub-menu">
<li class="has-submenu">
<a href="#">Tin tức 1</a>
</li>
</ul>
</a>
</li>
</ul>
</div>
JS using:
$(document).ready(function () {
function closeMenu() {
$('.t-mobile-menu').removeClass('show');
$('.overlay-menu').removeClass('active');
}
$(".has-submenu > .btn-toggle-sub").on("click", function(e){
var parentli = $(this).closest('li');
if(parentli.hasClass('opened')) {
parentli.removeClass('opened');
parentli.find('> ul.sub-menu').slideUp(400);
} else {
parentli.addClass('opened');
parentli.find('> ul.sub-menu').slideDown(400);
}
parentli.siblings('li').removeClass('opened');
parentli.siblings('li').find('.has-submenu.opened').removeClass('opened');
parentli.siblings('li').find('ul:visible').slideUp();
})
$('.btn-menu-mobile').on("click", function(){
$('.overlay-menu').toggleClass("active");
$(".t-mobile-menu").toggleClass("show");
return false;
})
$('.overlay-menu, .m-menu-close').on("click", function(){
closeMenu();
})
});
SCSS:
/* CSS Menu mobile */
.t-mobile-menu {
position: fixed;
top: 0;
bottom: 0;
left: -85%;
width: 85%;
max-width: 400px;
background-color: #f3f3f3;
box-sizing: border-box;
font-size: 14px;
transition: 0.2s;
overflow-y: auto;
overflow-x: hidden;
z-index: 999;
&.show {
left: 0;
}
.m-menu__title {
position: relative;
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px 20px;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
color: rgba(0, 0, 0, 0.5);
.title {
font-size: 14px;
margin: 0;
text-align: center;
width: 100%;
}
.m-menu-close {
padding: 0;
font-size: 26px;
width: 26px;
height: 26px;
text-align: center;
line-height: 22px;
text-decoration: none;
color: #111;
transform: translateY(-50%) rotate(45deg);
position: absolute;
top: 50%;
right: 8px;
}
}
ul {
margin: 0;
padding-left: 0;
li {
position: relative;
list-style-type: none;
&.active > a {
color: #00b140;
}
&.has-submenu a {
padding-right: 35px;
}
& > a:before {
content: "";
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
display: block;
position: absolute;
left: 20px;
right: 0;
bottom: 0;
}
a {
color: #000;
text-decoration: none;
display: block;
padding: 11px 20px;
transition: 0.2s;
line-height: 1.3;
}
}
}
.has-submenu {
&.opened > .btn-toggle-sub:before {
content: "-";
}
& > a {
position: relative;
}
& > .btn-toggle-sub {
width: 40px;
height: 42px;
max-height: 100%;
position: absolute;
top: 0;
right: 0;
color: #000;
z-index: 2;
&:before {
content: "+";
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
transition: 0.2s;
font-size: 18px;
}
}
.sub-menu {
padding-left: 20px;
display: none;
li {
a {
font-size: 14px;
}
}
}
}
}
.overlay-menu.active {
content: "";
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.7);
transition: 0.5s;
z-index: 888;
}
Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta laborum molestiae id dicta minus doloribus
exercitationem, sequi magnam illo maiores cumque, nostrum doloremque hic maxime aperiam distinctio est
assumenda fugiat?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta laborum molestiae id dicta minus doloribus
exercitationem, sequi magnam illo maiores cumque, nostrum doloremque hic maxime aperiam distinctio est
assumenda fugiat?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta laborum molestiae id dicta minus doloribus
exercitationem, sequi magnam illo maiores cumque, nostrum doloremque hic maxime aperiam distinctio est
assumenda fugiat?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta laborum molestiae id dicta minus doloribus
exercitationem, sequi magnam illo maiores cumque, nostrum doloremque hic maxime aperiam distinctio est
assumenda fugiat?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta laborum molestiae id dicta minus doloribus
exercitationem, sequi magnam illo maiores cumque, nostrum doloremque hic maxime aperiam distinctio est
assumenda fugiat?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta laborum molestiae id dicta minus doloribus
exercitationem, sequi magnam illo maiores cumque, nostrum doloremque hic maxime aperiam distinctio est
assumenda fugiat?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta laborum molestiae id dicta minus doloribus
exercitationem, sequi magnam illo maiores cumque, nostrum doloremque hic maxime aperiam distinctio est
assumenda fugiat?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta laborum molestiae id dicta minus doloribus
exercitationem, sequi magnam illo maiores cumque, nostrum doloremque hic maxime aperiam distinctio est
assumenda fugiat?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta laborum molestiae id dicta minus doloribus
exercitationem, sequi magnam illo maiores cumque, nostrum doloremque hic maxime aperiam distinctio est
assumenda fugiat?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta laborum molestiae id dicta minus doloribus
exercitationem, sequi magnam illo maiores cumque, nostrum doloremque hic maxime aperiam distinctio est
assumenda fugiat?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta laborum molestiae id dicta minus doloribus
exercitationem, sequi magnam illo maiores cumque, nostrum doloremque hic maxime aperiam distinctio est
assumenda fugiat?