How to use animated material icons in vuetify

13,985

Solution 1

I found this page when I wanted to mimic the animation of the chevron icon when toggling the expansion panels within a v-menu icon. I am not sure if this is exactly what you needed, but this is how I've done it:

<template>
  <v-menu offset-y v-model="menuValue">
    <template v-slot:activator="{ on }">
      <v-btn v-on="on" :class="{active: menuValue}">
        <v-icon>mdi-chevron-down</v-icon>
      </v-btn>
    </template>
  </v-menu>
</template>

<script>
  export default {
    data() {
      return {
        menuValue: null
      };
    }
  };
</script>

<style lang="scss" scoped>
  .v-btn.active .v-icon {
    transform: rotate(-180deg);
  }
</style>

Solution 2

The short answer is no. The v-icon element currently renders icons from a webfont. Fonts cannot be animated in this way. You can apply simple fade, spin, scale, and flip animations to achieve a simple transition between two icons but the complex transitions you linked to in the Material Guidelines require much more work.

My recommendation is to use inline SVG icons which are available from the official icon set as well as the community driven icon set and animate between those using CSS animation, SMIL, or JavaScript.

Share:
13,985

Related videos on Youtube

vahdet
Author by

vahdet

🌫️ &lt;- This the air of mystery which I prefer to keep about very me.

Updated on June 04, 2022

Comments

  • vahdet
    vahdet almost 2 years

    By the v-icon component of Vuetify, using mainstream material design icons is quite straightforward like:

    <v-icon>home</v-icon>
    

    Now, I wonder if animated material icons are supported and can be used in Vuetify in a similar fashion -I mean without having to add extra lines of css code etc. if possible.

    In the examples, I have noticed the usage of fa-spin for Font Awesome; yet it is out of scope. I am bound to Google's material icons library.

    EDIT: The specific kind of behavior I need is in the video examples in transitions section here: https://material.io/design/iconography/animated-icons.html# [See how a play button becomes pause with a smooth animation when clicked].

    • raina77ow
      raina77ow over 5 years
      If you only need to add some preset animation, adding the corresponding CSS from FontAwesome (with animation descriptions) might be enough (try adding fa-spin or similar classes to MD Icons on that demo page). But you may need something more - hover animations, etc. - and that's not implemented even in FA yet.