Menu full screen html e css – efeito cascata
Menu full screen html e css – efeito cascata
Este tutorial veremos como criar um Menu full screen com html e css – efeito cascata.
Nesta seção, projetaremos uma estrutura das seguintes tags abaixo.
Tags: <div>, <span>, <ul>, <li> e <a>.
Essas tags usaremos para criar a nosso Menu com html e css.
Vamos Adicionar o HTML
<!--Menu Fullscreen-->
<div class="menu-mobile">
<span class="menu-mobile_line menu-mobile_line-top"></span>
<span class="menu-mobile_line"></span>
<span class="menu-mobile_line menu-mobile_line-bottom"></span>
</div>
<div class="nav">
<div class="nav_content">
<ul class="nav_list">
<li class="nav_list-item">Html</li>
<li class="nav_list-item">Css</li>
<li class="nav_list-item">JQuery</li>
<li class="nav_list-item">WordPress</li>
</ul>
</div>
</div>
<!--Menu Fullscreen-->
Vamos Adicionar o CSS
Nesta seção, usaremos algumas propriedades CSS para estilizar e projetar o nosso Menu com efeito de cascata.
.menu-mobile {
height: 25px;
width: 25px;
cursor: pointer;
float: right;
margin-top: 25px;
z-index:9;
position: relative;
}
.menu-mobile_line {
height: 2px;
width: 25px;
display: block;
background-color: #242424;
margin-bottom: 5px;
transition: transform 0.2s ease, background-color 0.5s ease;
}
.menu-mobile_line-top {
width: 25px;
}
.menu-mobile_line-bottom {
width: 25px;
float: right;
}
.nav {
position: fixed;
z-index: 1;
}
.nav:before, .nav:after {
top:0;
left:0;
content: "";
position: fixed;
width: 100vw;
height: 100vh;
background: rgba(0, 207, 215, 0.9);
z-index: -1;
transition: transform cubic-bezier(0.77, 0, 0.175, 1) 0.8s;
transform: translateX(0%) translateY(-100%);
}
.nav:after {
background: rgba(0, 0, 0, 0.95);
transition-delay: 0s;
}
.nav:before {
transition-delay: 0.1s;
}
.nav_content {
position: fixed;
top: 50%;
transform: translate(0%, -50%);
width: 100%;
text-align: center;
font-size: calc(2vw + 10px);
font-weight: 200;
cursor: pointer;
visibility:hidden;
}
.nav_list-item {
position: relative;
display: inline-block;
transition-delay: 0.8s;
opacity: 0;
transform: translate(0%, 100%);
transition: opacity 0.2s ease, transform 0.3s ease;
margin-right: 30px;
color: #00cdd6;
}
.nav_list-item:before {
content: "";
position: absolute;
background: #00cdd6;
width:0;
height: 2px;
top: 100%;
transform: translate(0%, 0%);
transition: all 0.3s ease;
z-index: -1;
}
.nav_list-item:hover:before {
width: 100%;
}
body.nav-active .menu-mobile_line {
background-color: #00cdd6;
transform: translateX(0px) rotate(-45deg);
}
body.nav-active .menu-mobile_line-top {
transform: translateX(0px) translateY(6px) rotate(45deg);
}
body.nav-active .menu-mobile_line-bottom {
transform: translateX(-2px) rotate(45deg);
display: none;
}
body.nav-active .nav {
visibility: visible;
top:0;
left:0;
}
body.nav-active .nav_content {
transition: all 5s;
visibility:visible ;
}
body.nav-active .nav:before, body.nav-active .nav:after {
transform: translateX(0%) translateY(0%);
}
body.nav-active .nav:after {
transition-delay: 0.1s;
}
body.nav-active .nav:before {
transition-delay: 0s;
}
body.nav-active .nav_list-item {
opacity: 1;
transform: translateX(0%);
transition: opacity 0.3s ease, transform 0.3s ease, color 0.3s ease;
}
body.nav-active .nav_list-item:nth-child(0) {
transition-delay: 0.5s;
}
body.nav-active .nav_list-item:nth-child(1) {
transition-delay: 0.6s;
}
body.nav-active .nav_list-item:nth-child(2) {
transition-delay: 0.7s;
}
body.nav-active .nav_list-item:nth-child(3) {
transition-delay: 0.8s;
}
body.nav-active .nav_list-item:nth-child(4) {
transition-delay: 0.9s;
}
Vamos Adicionar o Script:
para dar o efeito toggleClass para remover e adicionar class.
<script>
console.clear();
const app = (() => {
let body;
let menu;
let menuItems;
const init = () => {
body = document.querySelector('body');
menu = document.querySelector('.menu-mobile');
menuItems = document.querySelectorAll('.nav_list-item');
applyListeners();
};
const applyListeners = () => {
menu.addEventListener('click', () => toggleClass(body, 'nav-active'));
};
const toggleClass = (element, stringClass) => {
if (element.classList.contains(stringClass))
element.classList.remove(stringClass);else
element.classList.add(stringClass);
};
init();
})();
</script>
Combinando as Três seções acima Html Css e javascript temos o seguinte Resultado!
Veja o Resultado baixo!


Deixe um comentário