Bird
Raised Fist0
Vueframework~5 mins

Transition modes (in-out, out-in) in Vue

Choose your learning style10 modes available
Introduction

Transition modes control how Vue switches between elements during animations. They help make smooth visual changes when content updates.

When you want one element to fade out before another fades in.
When you want two elements to animate at the same time during a switch.
When you want to avoid flickering or overlapping content during transitions.
When you want to control the order of entering and leaving animations.
When you want a cleaner user experience during component swaps.
Syntax
Vue
<transition mode="in-out|out-in"> ... </transition>

The mode attribute accepts two values: in-out and out-in.

in-out means the new element enters first, then the old leaves.

out-in means the old element leaves first, then the new enters.

Examples
The new component appears first, then the old component disappears.
Vue
<transition mode="in-out">
  <component :is="view" />
</transition>
The old component disappears first, then the new component appears.
Vue
<transition mode="out-in">
  <component :is="view" />
</transition>
Sample Program

This Vue component toggles between two views labeled 'A' and 'B'. The transition uses mode="out-in" so the old box fades out fully before the new box fades in. This avoids overlap and flicker.

Vue
<template>
  <div>
    <button @click="toggle">Toggle View</button>
    <transition name="fade" mode="out-in">
      <div :key="view" class="box">
        {{ view }}
      </div>
    </transition>
  </div>
</template>

<script setup>
import { ref } from 'vue'

const view = ref('A')
function toggle() {
  view.value = view.value === 'A' ? 'B' : 'A'
}
</script>

<style scoped>
.box {
  width: 100px;
  height: 100px;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: #42b983;
  color: white;
  font-weight: bold;
  border-radius: 0.5rem;
  margin-top: 1rem;
}
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s ease;
}
.fade-enter-from, .fade-leave-to {
  opacity: 0;
}
</style>
OutputSuccess
Important Notes

Use mode only on <transition> components wrapping a single element or component.

Without mode, Vue runs enter and leave animations simultaneously.

Choose in-out or out-in depending on which animation order looks better for your UI.

Summary

Transition modes control the order of enter and leave animations.

in-out: new element enters first, old leaves after.

out-in: old element leaves first, new enters after.

Practice

(1/5)
1. What does the in-out transition mode do in Vue transitions?
easy
A. No transition happens; elements switch instantly.
B. The old element leaves first, then the new element enters.
C. Both elements enter and leave simultaneously.
D. The new element enters first, then the old element leaves.

Solution

  1. Step 1: Understand transition modes

    Vue transition modes control the order of entering and leaving animations.
  2. Step 2: Recall in-out behavior

    in-out means the new element enters first, then the old element leaves.
  3. Final Answer:

    The new element enters first, then the old element leaves. -> Option D
  4. Quick Check:

    in-out = new enters first [OK]
Hint: Remember: in-out means 'in' happens before 'out' [OK]
Common Mistakes:
  • Confusing in-out with out-in order
  • Thinking both enter and leave happen simultaneously
  • Assuming no animation delay
2. Which is the correct syntax to apply the out-in transition mode in a Vue <transition> component?
easy
A.
B.
C.
D.

Solution

  1. Step 1: Identify correct mode attribute

    The mode attribute on <transition> sets the transition mode.
  2. Step 2: Match mode value for out-in

    The correct value for the mode that makes old element leave first is "out-in".
  3. Final Answer:

    <transition mode="out-in"> -> Option A
  4. Quick Check:

    out-in mode syntax = mode="out-in" [OK]
Hint: Use mode="out-in" exactly for old leaves first [OK]
Common Mistakes:
  • Using mode="in-out" instead of out-in
  • Using invalid mode values like "both" or "enter-leave"
  • Omitting quotes around mode value
3. Given this Vue template snippet:
<transition mode="out-in">
  <component :is="view" />
</transition>

If view changes from "A" to "B", what happens first?
medium
A. Component A leaves, then component B enters.
B. Component B enters, then component A leaves.
C. Both components enter and leave at the same time.
D. No transition occurs; component switches instantly.

Solution

  1. Step 1: Identify transition mode in code

    The mode is set to "out-in", meaning the old component leaves first.
  2. Step 2: Understand transition order

    When view changes, component A leaves first, then component B enters.
  3. Final Answer:

    Component A leaves, then component B enters. -> Option A
  4. Quick Check:

    out-in mode = old leaves first [OK]
Hint: out-in means old leaves before new enters [OK]
Common Mistakes:
  • Thinking new enters before old leaves in out-in mode
  • Assuming simultaneous enter and leave
  • Ignoring the mode attribute effect
4. You wrote this Vue transition:
<transition mode="in-out">
  <div v-if="show">Hello</div>
</transition>

But the old element leaves before the new one enters. What is the likely mistake?
medium
A. You need to add a key attribute to the div.
B. You forgot to add v-show instead of v-if.
C. You used mode="in-out" but expected out-in behavior.
D. You must wrap the element in a <transition-group> instead.

Solution

  1. Step 1: Analyze transition mode and behavior

    The mode is set to "in-out", which means new enters first, old leaves after.
  2. Step 2: Compare expected and actual behavior

    The old element leaves before new enters, which matches "out-in" mode, not "in-out".
  3. Final Answer:

    You used mode="in-out" but expected out-in behavior. -> Option C
  4. Quick Check:

    in-out mode means new enters first [OK]
Hint: Match mode to expected order: in-out vs out-in [OK]
Common Mistakes:
  • Confusing in-out and out-in modes
  • Thinking v-if vs v-show affects mode order
  • Assuming transition-group is needed for single elements
5. You want to create a Vue transition where the old element fades out completely before the new element fades in. Which transition mode and setup should you use?
hard
A. Use mode="in-out" with CSS fade-in on enter and fade-out on leave.
B. Use mode="out-in" with CSS fade-out on leave and fade-in on enter.
C. Use no mode and rely on simultaneous fade animations.
D. Use mode="both" with combined fade animations.

Solution

  1. Step 1: Understand desired animation order

    You want the old element to fade out completely before the new element fades in.
  2. Step 2: Choose correct transition mode

    out-in mode makes the old element leave first, then the new enters, matching the requirement.
  3. Step 3: Confirm CSS setup

    Use CSS classes for fade-out on leave and fade-in on enter to achieve smooth transitions.
  4. Final Answer:

    Use mode="out-in" with CSS fade-out on leave and fade-in on enter. -> Option B
  5. Quick Check:

    Old fades out first = out-in mode [OK]
Hint: Old fades out first? Use out-in mode [OK]
Common Mistakes:
  • Using in-out mode which enters new before old leaves
  • Assuming simultaneous fades without mode
  • Using invalid mode values like "both"
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard