Vue.js Animations


Vue.js is a popular JavaScript framework for building interactive and dynamic user interfaces. One of the key features of Vue.js is its ability to create smooth and visually appealing animations for web pages. In this tutorial, we will explore the various ways to use Vue.js animations.


Vue.js provides a built-in transition component that can be used to add animations to elements when they are added, removed, or updated. To use transitions, first, we need to define the CSS styles for the animation. Here’s an example:

.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;

.fade-enter, .fade-leave-to {
  opacity: 0;

In this example, we define two CSS classes: fade-enter-active and fade-leave-active. These classes define the transition styles for when an element is added or removed from the DOM. We also define two more classes: fade-enter and fade-leave-to. These classes define the initial and final styles for the animation.

Next, we need to use the transition component in our Vue.js template. Here’s an example:

<transition name="fade">
  <p v-if="show">Hello!</p>

In this example, we use the name attribute to specify the name of the transition. We also use the v-if directive to conditionally render the p element. When the show variable is true, the p element will be added to the DOM with the specified transition animation.

CSS Animations

Vue.js also supports CSS animations. To use CSS animations, we need to define the animation keyframes in our CSS styles. Here’s an example:

@keyframes bounce {
  0% { transform: translateY(0); }
  50% { transform: translateY(-20px); }
  100% { transform: translateY(0); }

.bounce {
  animation: bounce 1s infinite;

In this example, we define the bounce animation using the @keyframes rule. We also define the .bounce CSS class that applies the bounce animation to an element. We can use this class in our Vue.js template like this:

<div :class="{ 'bounce': isBouncing }"></div>

In this example, we use the :class directive to conditionally apply the .bounce class when the isBouncing variable is true. CSS animations are a great way to add visual effects to our web pages with minimal effort.

JavaScript Animations

Vue.js also allows us to create custom JavaScript animations. To create a JavaScript animation, we need to define the animation logic in a method and use the transition component to apply the animation. Here’s an example:

  enter-active-class="animated bounceIn"
  leave-active-class="animated bounceOut"
  <p v-if="show">Hello!</p>

In this example, we use the enter-active-class and leave-active-class attributes to specify the CSS classes for the animation. We can use any CSS animation library or define our own classes for the animation. JavaScript animations give us more control over the animation logic and are useful for creating complex animations.

Using Third-Party Libraries

Vue.js also supports using third-party animation libraries such as Animate.css, which provides a wide range of pre-built animations that can be easily added to our Vue.js projects. Here is an example of using Animate.css with Vue.js:

<transition enter-active-class="animated bounce">
  <p v-if="show">Hello!</p>

In this example, we use the enter-active-class attribute to apply the bounce animation from Animate.css to the p element when it is added to the DOM.


Vue.js provides powerful and flexible options for adding animations to web pages. We can use transitions, CSS animations, JavaScript animations, and third-party animation libraries to create visually appealing effects. By using these animation techniques, we can enhance user experience and create engaging web applications.

Previous Post

Vue.js State Management: Using Vuex

Next Post

Best Practices: Vue.js

Related Posts