En el desarrollo de sitios web modernos, es esencial contar con un menú de navegación responsivo que se adapte a diferentes dispositivos y tamaños de pantalla. En esta entrada del blog, aprenderemos a crear un menú de navegación responsivo utilizando HTML, SCSS y JavaScript.
En el HTML muestra la estructura básica del menú de navegación. Utilizamos la etiqueta <nav> como contenedor principal y dentro de ella agregamos una etiqueta <ul> para listar los elementos del menú. Cada elemento de menú se encuentra dentro de una etiqueta <li> y se enlaza a una página específica mediante la etiqueta <a>. Todo ello dento de la etiqueta <header>.
<body> <header> <h1>FuturaDrive</h1> <nav> <ul> <li><a href="">Home</a></li> <li><a href="">About</a></li> <li><a href="">Services</a></li> <li><a href="">Contact</a></li> </ul> <i class="fas fa-bars"></i> </nav> </header> </body>
En el SCSS, se utilizan variables SCSS, se usa un diseño de cajas flexibles con FLEX y utiliza la característica de nesting (anidamiento) de SCSS para agrupar selectores relacionados y reducir la repetición de código. Para aplicar estilos específicos según el tamaño de la pantalla o el dispositivo., se usan media queries.
@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@800&display=swap'); $primary-color-text: #fff; * { margin: 0; padding: 0; box-sizing: border-box; } body { min-height: 100vh; background-image: url('https://source.unsplash.com/L8oIdSYOTKs'); background-size: cover; background-position: center; } header { display: flex; align-items: center; justify-content: space-around; padding: 2rem 0; h1 { font-family: 'Orbitron', sans-serif; font-weight: 800; color: $primary-color-text; font-size: 3rem; } nav ul { display: flex; li { list-style: none; a { text-decoration: none; color: $primary-color-text; font-size: 1rem; padding: 1rem 1.5rem; transition: all .4s; &:hover{ opacity: 0.7; } } } } .fa-bars { color: #fff; font-size: 1.5rem; cursor: pointer; display: none; } .show-menu { opacity: 1; visibility: visible; } a:hover { transition: all 0.4s; } } /* Media Query */ @media (max-width: 900px) { header{ nav ul { flex-direction: column; background-color: rgba(255, 255, 255, 0.1); backdrop-filter: blur(15px); border-radius: 1rem; position: absolute; right: 0.7rem; top: 100px; width: 400px; padding: 1rem; opacity: 0; visibility: hidden; transition: all 0.4s; li { padding: 1rem; text-align: center; } } .fa-bars { display: block; } } } @media (max-width: 500px) { header{ nav{ display: flex; justify-content: center; ul { width: 95%; } } } }
En el Javascript, se una sencilla técnica que se basa en añadir o quitar una clase cuando se hace click en el elemento con el icono de hamburguesa a través de la propiedad classList y su método toggle().
<script> const menuToggle = document.querySelector('.fa-bars'); const navMenu = document.querySelector('nav ul'); menuToggle.addEventListener('click', () => { navMenu.classList.toggle('show-menu'); }); </script>
Recuerda compilar el archivo “styles.scss” en un archivo CSS llamado “styles.css” antes de utilizarlo en tu sitio web.
¡Con estos pasos sencillos, puedes crear un menú de navegación responsivo y mejorar la experiencia de tus usuarios en dispositivos móviles!