Contenido del curso
Built-in Components
Componentes personalizados
Composition API
- 12

Composition API: setup en Vue 3
08:13 min - 13

Hooks del ciclo de vida en Vue 3 setup
05:18 min - 14

`ref` y `reactive` en Vue Composition API
07:37 min - 15

Watchers con Composition API en Vue.js
05:32 min - 16

Propiedades computadas con Composition API
07:10 min - 17

Props reactivos con toRefs en Vue.js
05:26 min - 18

El argumento context en Vue 3 setup
08:33 min - 19

provide e inject en Vue Composition API
05:00 min - 20

Template Refs en Vue 3 con Composition API
05:33 min - 21

Composition API vs Options API en Vue.js
07:26 min - 22

script setup en Vue 3 sin export default
06:34 min
Cierre del curso
Transiciones con fade en Vue.js
Resumen
Animar la aparición y desaparición de elementos en una interfaz mejora la percepción de fluidez y profesionalismo. Con el componente transition de Vue.js puedes aplicar estilos CSS automáticamente cuando un elemento entra o sale del DOM, sin escribir lógica adicional ni librerías externas.
Esta guía está pensada para desarrolladores frontend que ya construyen componentes en Vue y quieren añadir animaciones reutilizables, como menús desplegables o galerías, usando solo clases CSS y la API que Vue ya trae integrada.
Qué es el componente transition de Vue.js y para qué sirve
El componente transition es un built-in de Vue.js que envuelve un único elemento y aplica clases CSS en momentos específicos del ciclo de aparición o desaparición. La idea es que tú declares un nombre de transición y Vue se encargue de añadir y quitar las clases en el instante correcto.
Un caso típico es un menú que se muestra u oculta al hacer clic en un botón, controlado por una variable booleana. También aplica para galerías de fotos, paneles de detalles o cualquier elemento que aparezca y desaparezca según el estado.
¿Qué hace el componente transition en Vue.js? Aplica clases CSS automáticamente cuando un elemento entra o sale del DOM, permitiéndote animar opacidad, posición, color o cualquier propiedad CSS sin escribir JavaScript adicional.
Cómo se monta el ejemplo del menú desplegable
En el proyecto creado con la CLI de Vue, primero defines un botón y una variable show en data con valor inicial false. El clic alterna esa variable entre verdadero y falso [01:30].
Luego creas un componente externo Menu.vue con una lista simple de tres opciones y lo importas en el componente raíz. Para mostrarlo u ocultarlo tienes dos directivas posibles:
v-if: monta y desmonta el componente del DOM por completo.v-show: lo mantiene en el DOM y solo alternadisplay: nonecon CSS.
La diferencia importa porque v-show es más eficiente cuando el elemento aparece y desaparece con frecuencia, ya que evita el costo de montar y desmontar [02:50].
Cómo envolver el elemento con transition
Dentro del template, envuelves el componente Menu con la etiqueta <transition> y le pasas la propiedad name, por ejemplo fade. Ese nombre es la raíz que Vue usará para buscar tus clases CSS.
vue <transition name="fade">
<Menu v-show="show" /> </transition>Vue no añade ningún div ni elemento extra al HTML. Solo gestiona las clases sobre el elemento envuelto [04:10].
Cuáles son las clases de transición que reconoce Vue.js
Vue espera que escribas clases CSS con una nomenclatura específica basada en el nombre que definiste. Hay dos estados y tres momentos que combinar.
Los dos estados son:
enter: el elemento que aparece en pantalla.leave: el elemento que desaparece.
Los tres momentos son:
from: el instante inicial de la transición.active: mientras la transición ocurre.to: el estado final.
Combinándolos obtienes clases como fade-enter-from, fade-enter-active, fade-enter-to, fade-leave-from, fade-leave-active y fade-leave-to. Cada una se activa en el momento exacto que indica su nombre [05:40].
¿Qué diferencia hay entre enter-from y enter-to?
enter-fromdefine el estado inicial cuando el elemento aún no es visible, yenter-todefine el estado final ya visible. Vue interpola entre ambos durante la duración que marques enenter-active.
Cómo aplicar un fade in y fade out con opacity
Para lograr un desvanecimiento suave, defines la transición CSS sobre la propiedad opacity en las clases active, y los valores extremos en from y to.
css .fade-enter-active, .fade-leave-active { transition: opacity 0.5s ease; }
.fade-enter-from, .fade-leave-to { opacity: 0; }
La propiedad transition de CSS recibe la propiedad a animar, la duración (0.5 segundos) y la curva de aceleración (ease). El valor por defecto de opacity es 1, así que solo necesitas declarar el estado en cero para que Vue interpole entre ambos extremos [08:20].
Si olvidas declarar fade-enter-from con opacity: 0, el elemento aparecerá de golpe en lugar de desvanecerse al entrar. Ese detalle es fácil de pasar por alto y rompe la simetría visual de la animación.
Por qué usar v-show en lugar de v-if con transiciones
Cuando combinas v-show con transition, el elemento permanece en el DOM y Vue solo alterna su visibilidad aplicando las clases. Esto produce animaciones más fluidas porque no hay un montaje desde cero cada vez que aparece.
Con v-if también funciona, pero el componente se reconstruye en cada ciclo, lo que puede ser innecesario para elementos simples como un menú [03:15].
Qué otras propiedades puedes animar más allá de opacity
La opacidad es solo el comienzo. El componente transition acepta cualquier propiedad CSS animable, lo que abre opciones como:
transformpara deslizamientos, escalas o rotaciones.background-colorpara cambios de color.heightowidthpara expandir y contraer.borderpara resaltar bordes durante la entrada o salida.
Durante el ejemplo se experimenta con un borde rojo y un fondo del mismo color para visualizar exactamente cuándo se aplica cada clase, lo que ayuda a entender el ciclo antes de pulir la animación final [07:00].
El componente transition tiene más características avanzadas como modes, hooks en JavaScript y soporte para grupos con transition-group. Vale la pena explorar la documentación oficial y compartir tus experimentos en los comentarios.