Comenzar a mejorar tu página web con interactividad puede parecer un desafío, pero con las herramientas correctas, como las librerías de JavaScript, es un proceso gratificante. En esta lección, transformaremos el Navbar haciéndolo más dinámico y visualmente atractivo con la implementación del plugin Alpine.js, una herramienta emergente en el mundo del desarrollo frontend.
¿Cómo fijar el Navbar en la parte superior?
Fijar un Navbar puede mejorar mucho la experiencia de usuario, ya que permite a los visitantes tener siempre a la mano las opciones de navegación, sin importar en qué parte de la página se encuentren. Para lograr esto, hacemos uso de propiedades CSS y un poco de HTML.
Ajusta la posición: Primero, es crucial establecer la posición del Navbar para que se quede en la parte superior incluso mientras el usuario se desplace por la página.
.navbar{position: fixed;top:0;z-index:10;/* Asegúrate que esté por encima de otros elementos */width:100%;/* Para abarcar toda la pantalla */}
¿Cómo implementar la funcionalidad de mostrar y ocultar el menú?
La practicidad de un menú hamburguesa no tiene comparación, especialmente en dispositivos móviles. Ahora, integraremos Alpine.js para hacer que el menú se muestre y oculte con clics sencillos.
Integración de Alpine.js: Primero, añade Alpine.js a tu proyecto. Puedes hacerlo simplemente incorporando el script desde un CDN.
Configurar la funcionalidad con Alpine.js: Ahora, encierra tu Navbar en un contenedor con atributos para manejar su estado de visibilidad.
<navx-data="{ open: false }"><buttonx-on:click="open = !open"><!-- Icono de menú hamburguesa --></button><divx-show="open"><!-- Contenido del menú --></div></nav>
Mejora la usabilidad: Asegúrate de que el menú se oculta al hacer clic fuera del mismo, mejorando así la experiencia del usuario en dispositivos con pantalla táctil.
<divx-data="{ open: false }"@click.away="open = false"><button@click="open = !open"><!-- Icono de menú hamburguesa --></button><divx-show="open"><!-- Contenido del menú --></div></div>
¿Cómo adaptar el Navbar a dispositivos móviles?
Para finalizar, probemos cómo funciona este diseño en modo responsive. Testea tu implementación visitando tu página en un navegador móvil o a través de las herramientas de desarrollador en el navegador de escritorio.
Verifica en dispositivos móviles: Asegúrate de que el Navbar responda fluidamente a diferentes tamaños de pantalla.
Prueba la funcionalidad: Intenta el menú en varios dispositivos para garantizar que el comportamiento sea consistente y natural.
Con los pasos anteriores, te has equipado para transformar un simple Navbar en uno completamente interactivo y responsivo, usando Alpine.js para enriquecer tanto la estética como la funcionalidad. Si te quedan dudas o necesitas más consejos, ¡deja tus comentarios! Y sigue explorando el poder de JavaScript para seguir creando interfaces dinámicas y atractivas.
En la etiqueta x-transition:enter van todas las propiedades de la duración de la animación de entrada
En la etiqueta x-transition:enter-star van todas las propiedades iniciales de estilos de la etiqueta, algo así como como el "frame 0"% de la entrada
En la etiqueta x-transition:enter-end van todas las propiedades finales de estilos de la etiqueta, algo así como como el "frame 100%" de la entrada
.
.
En la etiqueta x-transition:leave van todas las propiedades de la duración de la animación de salida
En la etiqueta x-transition:leave-start van todas las propiedades iniciales de estilos de la etiqueta, algo asi como como el "frame 0"% de la salida
En la etiqueta x-transition:leave-end van todas las propiedades finales de estilos de la etiqueta, algo así como como el "frame 100%" de la salida
Esto esta muy bueno, gracias!!
Buen aporte!! Gracias saludos..
Un pequeño aporte, pueden usar 'sticky' en vez de 'fixed', logramos el efecto deseado de que se mantenga arriba mientras se hace scroll, pero sin sacarlo del DOM, cosa que si hace 'fixed'. Entonces así, solo se posiciona encima del banner cuando se hace scroll, pero no en su posición inicial.
Es mejor usar sticky que fixed ya que con sticky se respeta el espacio de la imagen del restaurante siempre, estando abierto o cerrado el menú. Se utilizaría así:
class="sticky top-0 z-10 w-full ..."
Gracias Chica Desconocida me has salvado, Una estrella para esos héroes anónimos. ★
Me encantan las herramientas adicionales que se aprenden en los cursos de Platzi! :green_heart:
A los filtros le puedes agregar mas parametros al metodo x-show para que la transicion sea mas suave:
x-show.transition.duration.600ms="open"
Por detrás show sin mas parametros anade un toggle con display block y display none, mientras que con mas paremetros agregar algunas transiciones. documentacion de x-show:
Funciona excelente, gracias.
¿Què es mejor hacer estos efectos con js o css ?
La pregunta es por el tema de velocidad y carga de archivos.
Hola:wave:
Encontré este link que te ayudará a salir de dudas, me cuentas que te parece :)
Para este caso es excelente poner
cursor-pointer
Sobre el ícono de la hamburguesa para dar a entender que se puede hacer click sobre ella.
Excelente bonus! Lo aplicaré de ahora en adelante en todas las Landing Pages que haga para practicar
Así logré qué me funcionará con la versión 3.7.1 de alpine.js:
WOW! Me sorprendió mucho esta clase y la facilidad para hacer un navbar, he estado haciendolos con puro CSS y me confundia mucho y con Alpine JS y Tailwind todo ha sido MUUUUY fácil
No me quedo claro que hace alphine JS ¿Dónde esta la mejora para el desarrollador Frontend? ¿Qué problema soluciona? ¿Para que tipo de cosas te ahorra trabajo?
Su función es ayudarnos a manejar la interactividad y lógica de la aplicación. Por supuesto, podemos hacerlo con JavaScript solito. Pero aún así se pueden automatizar / facilitar muchos procesos. Por eso existen frameworks como Vue, React, Angular o Svelte. Y también está Alpine JS, un framework frontend como estos 4 pero más en pequeñito, incluso se puede combinar con ellos: https://medium.com/@wearethreebears/a-comparison-of-a-simple-app-in-vue-js-and-alpine-js-2a8c57f8b0e3.