0Pricing
Vue Academy · Lección

El componente Transition

v-enter-from, v-enter-active, v-enter-to, clases v-leave-* y prop name para clases personalizadas.

El componente Transition es una lección gratuita de Vue Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Vue Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Vue Academy incluye 4 lecciones en total.

Qué hace el componente Transition

Vue incluye el componente integrado <Transition>, que aplica animaciones de entrada y salida a un único elemento o componente cuando se inserta o se elimina mediante v-if o v-show.

Por sí mismo no genera ningún elemento DOM adicional: únicamente gestiona las clases CSS y los tiempos de su elemento hijo.

<Transition>
  <p v-if="show">Hello Vue</p>
</Transition>

Solo un elemento

<Transition> espera exactamente un hijo directo. Envolver varios elementos hermanos no funcionará; use <TransitionGroup> para las listas.

El hijo debe alternarse mediante v-if, v-show o un componente dinámico.

<!-- valid: one child -->
<Transition>
  <div v-if="open" class="panel">Content</div>
</Transition>

Las seis clases de transición

Durante una entrada o una salida, Vue añade y elimina automáticamente seis clases en secuencia.

  • v-enter-from / v-leave-from - estado inicial
  • v-enter-active / v-leave-active - fase activa (coloque aquí la transición)
  • v-enter-to / v-leave-to - estado final
/* default prefix is "v-" */
.v-enter-active,
.v-leave-active {
  transition: opacity 0.3s ease;
}

Asignar un nombre a la transición

Asigne una propiedad name a la transición para que el prefijo de las clases cambie de v- a su nombre. Con name="fade", las clases pasan a ser fade-enter-from, fade-enter-active, etc.

<Transition name="fade">
  <p v-if="show">Fades in and out</p>
</Transition>

Un ejemplo completo de fundido

El fundido clásico anima opacity. El elemento comienza siendo completamente transparente, la clase activa declara la transición y la clase final lo lleva a una opacidad completa.

.fade-enter-from {
  opacity: 0;
}
.fade-enter-active {
  transition: opacity 0.3s ease;
}
.fade-enter-to {
  opacity: 1;
}

La secuencia de entrada paso a paso

Cuando se inserta el elemento:

  1. fade-enter-from y fade-enter-active se añaden antes de la representación (opacidad 0).
  2. En el siguiente fotograma, fade-enter-from se elimina y se añade fade-enter-to, por lo que la opacidad se anima hacia 1.
  3. Cuando termina la transición, se eliminan las clases active y to.
/* frame 1: opacity 0 (enter-from + enter-active) */
/* frame 2: opacity 1 (enter-to + enter-active) */

La secuencia de salida

La salida refleja la entrada mediante las clases leave. A menudo puede reutilizar la misma regla activa para ambas direcciones.

.fade-leave-from {
  opacity: 1;
}
.fade-leave-active {
  transition: opacity 0.3s ease;
}
.fade-leave-to {
  opacity: 0;
}

v-if frente a v-show

Ambas directivas activan transiciones. v-if monta y desmonta realmente el elemento, mientras que v-show lo mantiene en el DOM y alterna display. Con v-show, Vue gestiona el cambio de visualización alrededor de la fase activa para que la animación siga siendo visible.

<Transition name="fade">
  <p v-show="visible">Toggled with display</p>
</Transition>

Aparecer en la representación inicial

De forma predeterminada, la transición no se ejecuta en la primera representación. Añada la propiedad appear para que la animación de entrada se reproduzca cuando el componente se monte por primera vez.

<Transition name="fade" appear>
  <p>Animates in on page load</p>
</Transition>

Transicionar entre dos elementos

Use v-if / v-else dentro de un único componente Transition para intercambiar dos elementos. Asigne a cada uno una key única si tienen la misma etiqueta, para que Vue los trate como elementos distintos.

<Transition name="fade" mode="out-in">
  <button v-if="loading" key="load">Loading...</button>
  <button v-else key="done">Done</button>
</Transition>

Movimiento reducido y accesibilidad

Respete a los usuarios que prefieren menos movimiento. Deshabilite o acorte las transiciones con la consulta de medios prefers-reduced-motion para que las animaciones no causen molestias.

@media (prefers-reduced-motion: reduce) {
  .fade-enter-active,
  .fade-leave-active {
    transition: none;
  }
}

Comprobación rápida

¿Qué define fade-enter-from?

Recapitulación

Ha aprendido a usar el componente integrado <Transition>: envuelve un elemento alternado mediante v-if/v-show, aplica seis clases CSS (enter-from, enter-active, enter-to y sus equivalentes de salida), admite un prefijo name, appear para la primera representación y mode para los intercambios.

Preguntas frecuentes

¿La lección «El componente Transition» es gratis?

Sí — el texto completo de «El componente Transition» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Vue Academy, actualiza a CoddyKit PRO. El curso de Vue Academy incluye 4 lecciones en total.

¿Qué aprenderé en «El componente Transition»?

v-enter-from, v-enter-active, v-enter-to, clases v-leave-* y prop name para clases personalizadas. Practicas Vue Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Vue Academy?

No se requiere experiencia previa. Vue Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «El componente Transition»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Vue Academy?

Sí. Cada lección de Vue Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. El componente Transition
  2. Transiciones y animaciones CSS
  3. Hooks de transición de JavaScript
  4. TransitionGroup para animaciones de listas
← Volver a Vue Academy