Lo de las variantes no es necesario si se usa la v3
Conociendo Tailwind CSS
Bienvenida al desarrollo con Tailwind
Tailwind 3.0: ¿qué hay de nuevo?
¿Cómo funciona Tailwind? Y otros frameworks de CSS
Mobile First y Utility First
Instalación y directivas
Creación del proyecto e instalación de Tailwind
Directivas de Tailwind
Utilidades
Nueva paleta de colores extendida
Medidas y Breakpoints
Flexbox
Maquetación del proyecto
Plugins
Forms, Typography y Aspect ratio
Personalización
Tailwind como API para la creación de un Design System
Proyecto: Platzi Travel
Construyendo el cuerpo del proyecto
Creando la sección de Home
Diseñando nuestras cards
Extracción de componentes a clases para nuestra card
Creando la sección de Recomendados
Agregando animaciones al proyecto
Creando la sección de Rentas destacadas
Sección de FAQS
Footer
TabBar funcional
Haciendo responsivo nuestro proyecto
Haciendo responsivo nuestro proyecto: rentas destacadas
Creando la navbar
Agregando el Dark Mode
Optimización de nuestro proyecto
Purge CSS
Cómo hacer la migración de tu proyecto a Tailwind 3.0
Conclusiones
Conclusiones y siguientes pasos
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
En el mundo del desarrollo web, crear una experiencia interactiva y fluida es esencial para atraer la atención de los usuarios. Tailwind CSS te ofrece varias herramientas para lograrlo fácilmente. En esta guía, vamos a explorar cómo añadir animaciones a tus elementos utilizando Tailwind con un enfoque práctico y sencillo.
Para comenzar a agregar animaciones a tus botones, es esencial incluir la propiedad transition
. Vamos a analizar cada paso necesario para configurar las animaciones en un botón específico en la sección "home" de tu código.
Definir propiedades de transición:
transition all
para que las transiciones afecten a todas las propiedades a las que se les aplique el cambio.duration
de 500 milisegundos.ease-in-out
para suavizar el inicio y el final de la animación.button {
@apply transition-all duration-500 ease-in-out;
}
Configurar efecto hover:
background
al color deseado con hover:background-primary
.hover:text-white
.translate
y scale
para efectos más dinámicos, por ejemplo, hacia el eje Y con un translate-y-1
y ampliar el botón con scale-110
.button:hover {
@apply bg-primary text-white translate-y-1 scale-110;
}
El mejorar la experiencia de usuario en un campo input
resulta crucial para atraer la atención. Te mostramos cómo añadir una suave animación a la barra de búsqueda.
Iniciar propiedades de transición:
transition
y define una duration
de 300 milisegundos para cambios rápidos.input {
@apply transition-all duration-300 ease-in-out;
}
Añadir efectos para el foco:
shadow
utilizando focus:shadow-none
.outline
por un efecto de ring
notorio.width
en el evento focus
para que ocupe 11 de 12 fracciones del contenedor al hacer clic.input:focus {
@apply ring-width-2 transform-width-11/12;
}
En algunas ocasiones, Tailwind no habilita ciertas transiciones de manera predeterminada para optimizar espacio. En estos casos, tendrás que configurar manualmente tu archivo de configuración.
Configurar variantes en Tailwind:
tailwind.config.js
.hover
y focus
en la propiedad width
.module.exports = {
variants: {
extend: {
width: ['responsive', 'hover', 'focus'],
},
},
}
Ejecutar el build:
npm run build
Elegir y aplicar la tipografía correcta puede influir significativamente en la apariencia y usabilidad de tu sitio web.
Asigna un font Montserrat
a todo tu body
:
body {
@apply font-mont;
}
Ajusta el tamaño de los elementos, como el botón, si su tamaño original no armoniza con el nuevo estilo.
button {
@apply text-lg width-48;
}
Este conjunto de pasos te ayudará a personalizar tus elementos con elegancia y dinamismo, mejorando la interacción del usuario en tu sitio web. Recuerda, mantener la experiencia del usuario en el centro de tu diseño con movimientos sutiles y coherentes puede marcar la diferencia en la retención de visitantes. ¡Sigue explorando el mundo de las animaciones y enriquecerás tus habilidades como desarrollador frontend!
Aportes 30
Preguntas 5
Lo de las variantes no es necesario si se usa la v3
Usando la versión 3 de Tailwind
Si alguno tuvo problemas para generar la transición de la barra de búsqueda, lo único que tienen que hacer es agregarle un ancho, nada más.
Pueden darse cuenta que el ancho que agregué es w-48 en el input, después de eso el código que puso la profesora no tiene ningún cambio, al parecer si el input no tiene un ancho inicial la transición que coloquemos no hará efecto, si alguien tiene una mejor explicación me gustaría que la deje abajo
<div class="w-full h-full flex flex-col absolute space-y-96 py-4 items-center ">
<input class="w-48 outline-none p-3 rounded-full shadow-sm transition-all duration-300 focus-within:shadow-sm focus:ring-2 focus:w-10/12" placeholder="San Francisco" type="search" id="">
</div>
Clases de Tailwind y sus equivalentes en propiedad CSS para animaciones:
transition-none
→ transition-property: none;transition-all
→ transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
transition
→ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
transition-colors
→ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
**transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);**
transition-duration: 150ms;
transition-opacity
→ transition-property: opacity;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
transition-shadow
→ transition-property: box-shadow;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
transition-transform
→ transition-property: transform;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
–
Animaciones aplicadas a home en archivo index.html
:
<div id="home">
<div class="w-full h-3/4">
<div class="w-full h-full flex flex-col absolute space-y-96 py-4 items-center ">
<input type="search" class="outline-none p-3 rounded-full shadow-sm transition duration-300 focus-within:shadow-sm focus:ring-2 focus:w-11/12" placeholder="San Francisco" name="" id="">
<button class="w-48 rounded-full text-lg text-primary shadow-sm font-semibold p-4 bg-white transition transition-all duration-500 ease-in-out hover:bg-primary hover:text-white transform hover:-translate-y-1 hover:scale-110">Explorar</button>
</div>
<div class="w-full h-full">
<img src="./img/sanFrancisco.jpg" alt="San Francisco City">
</div>
</div>
</div>
–
Archivo src/css/tailwind.css
(importante hacer build al guardar cambios):
@tailwind base;
@tailwind components;
@tailwind utilities;
.Card {
@apply w-48 h-64 shadow-md rounded-lg flex-none transform transition-all hover:-translate-y-4 hover:shadow-xl
}
–
Archivo tailwind.config.js
(importante hacer build al guardar cambios):
module.exports = {
content: ["./public/index.html", "./src/**/*.{html,js}"],
theme: {
extend: {
backgroundImage: {
sanFrancisco: "url('../img/sanFrancisco.jpg')",
sanFranciscoDesktop: "url('../img/sanFranciscoDesktop.jpg')",
yosemite: "url('../img/yosemite.jpg')",
LA: "url('../img/LA.jpg')",
seattle: "url('../img/seattle.jpg')",
new_york: "url('../img/new_york.jpg')",
norway: "url('../img/norway.jpg')",
sydney: "url('../img/sydney.jpg')",
miami: "url('../img/miami.jpg')",
switzerland: "url('../img/switzerland.jpg')",
bali: "url('../img/bali.jpg')",
norway: "url('../img/norway.jpg')",
chicago: "url('../img/chicago.jpg')",
europe: "url('../img/europe.jpg')",
iceland: "url('../img/iceland.jpg')",
},
backgroundColor: (theme) => ({
...theme("colors"),
primary: "#CC2D4A",
secondary: "#8FA206",
terciary: "#61AEC9",
}),
textColor: {
primary: "#CC2D4A",
secondary: "#8FA206",
terciary: "#61AEC9",
},
fontFamily: {
Montserrat: ["Montserrat", "sans-serif"],
},
},
},
variants: {
width: ["responsive", "hover", "focus"],
extend: {},
},
plugins: [],
};
Por favor a todos los devs y profesores que usen visual studio code presionen “ALT + Z” (Terminal: Toggle Size to Content Width) si el código en horizontal es muy largo sobretodo al momento de grabar videos. Es algo incomodo verlos moviendo la pantalla de izquiera a derecha y viceversa cortando el código en pantalla.
Si queremos que el focus (concretamente el ring) sea acorde al diseño de nuestra página, lo podemos personalizar añadiendo en la configuración de tailwind:
ringColor:{
'primary': '#CC2D4A',
'secondary': '#8FA206',
'tertiary': '#61AEC9',
},
Ahora ya podemos usar por ejemplo focus:ring-secondary
🎉
En la versión 3 de Tailwind no hace falta transition-all
basta con transition
En el botón queda así
transition duration-500 ease-in-out hover:bg-primary hover:text-white transform hover:-translate-y-1 hover:scale-110 text-2xl text-primary bg-white font-semibold rounded-full w-auto p-4 shadow-xl
Con la versión 3 de Tailwind. Queda de la siguiente forma animación sobre el botón.
transition duration-500 ease-in-out hover:bg-primary hover:text-white hover:-translate-y-1 hover:scale-110
Para que la transición sea válida en el Search Box, yo usé transition-all.
Código:
class="transition-all ease-in-out duration-300 focus:w-11/12"
Plugin: Inline fold (VS Code)
Permite colapsar las clases tan extensas de Tailwind
URL: https://marketplace.visualstudio.com/items?itemName=moalamri.inline-fold
Les dejo mi condigo con el que me funciono que la barra de búsqueda tuviera la animación de crecer lentamente.
<input class="w-1/2 placeholder:text-slate-400 outline-none p-3 rounded-full shadow-sm transition-all ease-in-out duration-300 focus-within:shadow-sm focus:ring-2 focus:w-11/12" placeholder="San Francisco" type="search">
La Transición en el INPUT de búsqueda (tailwind 3) me funcionó de la siguiente forma:
class="w-8/12 outline-none p-3 pl-5 rounded-full shadow-sm transition-all duration-300 focus-within:shadow-sm focus:ring-2 focus:w-10/12"
Parece que el problema de que no funciones, es por no poner un tamaño inicial (ejemplo: w-8/12)
Hola para que la animacion quede mas fluida al input hay que agregar ease-in-out , hover:scale-90 y a duration cambiamos el valor por 700.
<input class="outline-none p-4 rounded-full shadow-lg transition duration-700 ease-in-out focus:whithin:shadow-sm focus:ring-2 focus:w-11/12 hover:scale-90" type="search" placeholder="San Francisco" name="" id="">
LINK DE LA SECCIÓN DE >>> Transition Property
https://v2.tailwindcss.com/docs/transition-property
En éste video veo que es importante cuidar los espacios, nos pueden causar errores, para ver los espacios como lo tiene la profe es necesario en VS Code entrar a Settings, buscan editor.renderWhitespace y lo ponen en “all”.
Si les gusta modificar el json de settings igual:
"editor.renderWhitespace": "all",
Saludos.
Aveces me confundo y termino poniendo estilos en el placeholder o en el type JAKAJA
Errores como estos es por que esta mal escrito el codigo.
😄
The transtion-all
class does not exist. If transtion-all
is a custom class, make sure it is defined within a @layer
directive.
El código del input.
<input class="outline-none p-3 rounded-full shadow-sm transition duration-300 focus-within:shadow-sm focus:ring-2 focus:w-11/12" placeholder=" San Francisco" type="search" name="" id="">
El codigo del button con la transition:
<button class="text-xl text-primary font-semibold p-4 w-36 rounded-full bg-white transition transition-all ease-in-out delay-150 hover:bg-primary hover:text-white hover:-translate-y-1 hover:scale-110 duration-300">Explorar</button>
Al final así quedó con la v3 de tailwind
<input class="w-6/12 text-center rounded-full outline-none p-3 shadow-sm transition-all ease-in-out duration-500 focus-within:shadow-sm focus:ring-2 transform focus:w-11/12" type="search" placeholder="San Francisco">
<button class="w-auto rounded-full text-xl text-primary font-semibold p-4 bg-white transition-all duration-500 ease-in-out hover:bg-primary hover:text-white transform hover:translate-y-1 hover:scale-110">
Explore More
</button>
Como animar el width según la documentación. Cabe mencionar que no es buena práctica animar propiedades fuera del transform y opacity
a mi no me funciona lo de width: hover, focus, la verdad he probado de todo y no se porque pueda ser porque las demas propiedades del config si me las lee (los colores y las fonts) pero esas no, he mirado en la documentation y copiado tal cual pero ese focus con el width sigue sin funcionar 😦
P.D: Si he hecho el npm run tw:build, no es un problema de eso tampoco 😭
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?