Carregando...

Menu full screen html e css – efeito cascata   

Postado: 19 de outubro de 2022 Tempo de Leitura: 2 Minutos

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!

Baixar Código Veja Funcionando

Publicado por: Loop Nerd

641 Visualizações

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Artigos Relacionados