No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso Básico de Tailwind 2 y 3

Curso Básico de Tailwind 2 y 3

Ana María Díaz Solorio

Ana María Díaz Solorio

Agregando animaciones al proyecto

18/29
Recursos

¿Cómo animar elementos con Tailwind?

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.

¿Cómo inicializar transiciones en un botón?

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.

  1. Definir propiedades de transición:

    • Empezamos con transition all para que las transiciones afecten a todas las propiedades a las que se les aplique el cambio.
    • Asigna una duration de 500 milisegundos.
    • Usa ease-in-out para suavizar el inicio y el final de la animación.
    button {
        @apply transition-all duration-500 ease-in-out;
    }
    
  2. Configurar efecto hover:

    • Cambiar el background al color deseado con hover:background-primary.
    • Modificar el texto para que sea visible con hover:text-white.
    • Implementar transformaciones como 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;
    }
    

¿Cómo implementar animaciones en un campo de entrada?

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.

  1. Iniciar propiedades de transición:

    • Agrega transition y define una duration de 300 milisegundos para cambios rápidos.
    input {
        @apply transition-all duration-300 ease-in-out;
    }
    
  2. Añadir efectos para el foco:

    • Al enfocarse, elimina el shadow utilizando focus:shadow-none.
    • Sustituye el outline por un efecto de ring notorio.
    • Amplía dinámicamente la 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;
    }
    

¿Cómo activar transiciones personalizadas en Tailwind?

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.

  1. Configurar variantes en Tailwind:

    • Accede al archivo de configuración de Tailwind: tailwind.config.js.
    • Añade variantes para permitir el uso de hover y focus en la propiedad width.
    module.exports = {
        variants: {
            extend: {
                width: ['responsive', 'hover', 'focus'],
            },
        },
    }
    
  2. Ejecutar el build:

    • Una vez realizado el cambio, corre el build para asegurarte de que los cambios se aplican correctamente en tu entorno.
    npm run build
    

¿Cómo refinar la tipografía en tu proyecto?

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

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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-alltransition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms;
  • transitiontransition-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-colorstransition-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-opacitytransition-property: opacity; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms;
  • transition-shadowtransition-property: box-shadow; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms;
  • transition-transformtransition-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

Yo cuando al querer animar el input no me sale la transition duration-300 y queda saltando de un extremo al otro! Tal vez pocos se dieron cuenta…

Y encima a la profe tampoco le salío.

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

Pequeño Aporte de mi avance ![](https://static.platzi.com/media/user_upload/Agregando%20animaciones%20al%20proyecto-eee0109a-0bf9-428d-b7c0-f0708ab7610c.jpg)
Si estas utilizando la versión de Tailwind CSS 3, no necesitas agregar variantes al archivo tailwind.config.js. ![](https://static.platzi.com/media/user_upload/Screenshot%202024-06-02%20at%203.07.07%E2%80%AFPM-4e415267-fe3b-4d2f-baa9-e4aef9df295b.jpg) 🤓!!! De momento me ha encantado el curso, he aprendido mucho de Tailwind.

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

Apreendiendo todo lo general porque ya salió la v4
Hola a todos, comparto mi repositorio con lo trabajado en la clase <https://github.com/johncode877/travel-app.git>
Versión 3, sección HOME: ```html
<input class="w-48 outline-none p-3 rounded-full shadow-sm text-center transition duration-300 focus-within:shadow-sm focus:ring-2 focus:w-11/12" placeholder="San Fransisco" type="search" name="" id=""> <button class="bg-white w-48 h-auto p-3 lg:ml-16 rounded-full shadow-md font-semibold text-primary transition-all duration-700 ease-in-out hover:bg-primary hover:text-secondary" id='explore-more'>Explorar</button>
```
![](https://static.platzi.com/media/user_upload/imagen-6b2bd8e3-8520-4d3d-b9db-e9a50c8a67e2.jpg)
lastimosamente ninguna de las transiciones me funciono, estoy usando la v3 y aunque probé con todas las soluciones dadas en los comentarios ninguno de los dos elementos funciono :/

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 😭

Esta clase es para verla que para aprender jajaja, solo pone clases y uno se queda con cara de "AAAA BUENOO"