Ir al contenido

IDEAS PRÁCTICAS · ASIMOV INGENIERÍA

Cómo Crear un Menú de Navegación Animado

Haz interactivas tus páginas Web

Table of contents

No titles in the blog post

Un menú de navegación animado puede hacer que tu sitio web se vea moderno y atractivo. En este tutorial, te mostraré cómo crear un menú de navegación que se expande y contrae con una animación suave cuando el usuario hace clic en un botón. Utilizaremos HTML para la estructura, CSS para los estilos y JavaScript para la funcionalidad interactiva.

Dos monitores en un espacio de programación
Imagen ilustrativa · Fotis Fotopoulos / Unsplash.

HTML: Estructura del Contenido

Vamos a comenzar creando el archivo index.html. Este archivo contendrá la estructura básica de nuestro menú de navegación.


HTML

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Nav Animada</title>

    <link rel="stylesheet" href="./style.css">

    <script src="./script.js" defer></script>

</head>

<body>

    <nav class="active" id="nav">

        <ul>

            <li><a href="#">Home</a></li>

            <li><a href="#">Works</a></li>

            <li><a href="#">About</a></li>

            <li><a href="#">Contact</a></li>

        </ul>

        <button class="icon" id="toggle">

            <div class="line line1"></div>

            <div class="line line2"></div>

        </button>

    </nav>

</body>

</html>

CSS: Estilo del ContenidoCSS: Estilo del Contenido

Ahora, vamos a crear el archivo style.css para añadir estilo a nuestro menú de navegación.]

CSS

@import url('https://fonts.googleapis.com/css?family=Muli&display=swap');

* {

    box-sizing: border-box;

}

body {

    background-color: #eafbff;

    background-image: linear-gradient(

        to bottom,

        #eafbff 0%,

        #eafbff 50%,

        #5290f9 50%,

        #5290f9 100%

    );

    font-family: 'Muli', sans-serif;

    display: flex;

    align-items: center;

    justify-content: center;

    height: 100vh;

    margin: 0;

}

nav {

    background-color: #fff;

    padding: 20px;

    width: 80px;

    display: flex;

    align-items: center;

    justify-content: center;

    border-radius: 3px;

    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);

    transition: width 0.6s linear;

    overflow-x: hidden;

}

nav.active {

    width: 350px;

}

nav ul {

    display: flex;

    list-style-type: none;

    padding: 0;

    margin: 0;

    width: 0;

    transition: width 0.6s linear;

}

nav.active ul {

    width: 100%;

}

nav ul li {

    transform: rotateY(0deg);

    opacity: 0;

    transition: transform 0.6s linear, opacity 0.6s linear;

}

nav.active ul li {

    opacity: 1;

    transform: rotateY(360deg);

}

nav ul a {

    position: relative;

    color: #000;

    text-decoration: none;

    margin: 0 10px;

}

.icon {

    background-color: #fff;

    border: 0;

    cursor: pointer;

    padding: 0;

    position: relative;

    height: 30px;

    width: 30px;

}

.icon:focus {

    outline: 0;

}

.icon .line {

    background-color: #5290f9;

    height: 2px;

    width: 20px;

    position: absolute;

    top: 10px;

    left: 5px;

    transition: transform 0.6s linear;

}

.icon .line2 {

    top: auto;

    bottom: 10px;

}

nav.active .icon .line1 {

    transform: rotate(-765deg) translateY(5.5px);

}

nav.active .icon .line2 {

    transform: rotate(765deg) translateY(-5.5px);

}

JavaScript: Lógica y Funcionalidad

Finalmente, vamos a crear el archivo script.js para manejar la lógica de nuestro menú de navegación. Utilizaremos JavaScript para alternar la clase active del menú cuando el usuario haga clic en el botón.

JS

const toggle = document.getElementById('toggle');

const nav = document.getElementById('nav');



toggle.addEventListener('click', () => nav.classList.toggle('active'));


¡Contáctanos!

Si tienes preguntas, aclaraciones, sugerencias de temas o cualquier otra consulta, ¡no dudes en ponerte en contacto con nosotros! Por favor, completa el formulario de contacto disponible en este enlace, y estaremos encantados de ayudarte.

Si quieres acceder a mi GitHub para tener acceso a este código y a muchos más accede en el siguiente link