Vue.js动画

Vue.js动画

在Vue.js的应用程序中,我们可以像前面的示例中应用过渡一样应用动画。动画也有类别,必须声明才能获得动画效果。

Vue.js过渡和Vue.js动画之间唯一的区别是,在Vue.js动画中,“v-enter”不会立即在元素插入后删除,而是在动画结束事件上删除。

让我们举一个例子来理解动画的概念,并查看动画在应用程序中的工作方式。

例如

Index.html文件:

<html>
   <head>
      <title>Vue.js Animation</title>
      <link rel="stylesheet" href="index.css">
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
    <style>
         .shiftx-enter-active {
            animation: shift-in 2s;
         }
         .shiftx-leave-active {
            animation: shift-in 2s reverse;
         }
         @keyframes shift-in {
            0%   {transform:rotateX(0deg);}
            25%  {transform:rotateX(90deg);}
            50%  {transform:rotateX(120deg);}
            75%  {transform:rotateX(180deg);}
            100% {transform:rotateX(360deg);}
         }
      </style>
      <div id = "databinding">
      <p> 点击下方按钮查看动画效果。</p>
         <button v-on:click = "show = !show">点这里</button>
         <transition name = "shiftx">
            <p v-show = "show">
               <img src = "https://www.flowerpower.com.au/media/catalog/product/image/287189f77f/love-you-rose.jpg" style = "width:100px;height:100px;" />
            </p>
         </transition>
      </div>
      </script>
      <script src="index.js"></script>
   </body>
</html>

Index.js文件:

var vm = new Vue({
            el: '#databinding',
            data: {
               show:true
            },
            methods : {
            }
         })

让我们使用一个简单的CSS文件,使输出更具吸引力。

Index.css文件:

html, body {
    margin: 5px;
    padding: 0;
}

程序执行后,你将看到以下输出:

输出:

Vue.js动画

当你点击“点这里”按钮时,你可以看到动画效果。图片将从0度旋转到360度,最后消失。看以下图片:

Vue.js动画

另一个截图:

Vue.js动画

示例解释

在上面的示例中,可以看到我们使用了与过渡效果相同的类。在这里,我们将图像封装在以下p标签中:

<transition name = "shiftx">
   <p v-show = "show">
      <img src = "https://www.flowerpower.com.au/media/catalog/product/image/287189f77f/love-you-rose.jpg" style = "width:100px;height:100px;" />
   </p>
</transition>

在代码中,过渡名称为 shiftx,应用的类如下CSS代码所示:

<style>
   .shiftx-enter-active {
      animation: shift-in 2s;
   }
   .shiftx-leave-active {
      animation: shift-in 2s reverse;
   }
   @keyframes shift-in {
      0%   {transform:rotateX(0deg);}
      25%  {transform:rotateX(90deg);}
      50%  {transform:rotateX(120deg);}
      75%  {transform:rotateX(180deg);}
      100% {transform:rotateX(360deg);}
   }
</style> 

在以上代码中,类被定义在过渡名称内,即 shiftx-enter-active 和 .shiftx-leave-active

动画是在 0% 到 100% 的关键帧中定义的,其中在每个关键帧中定义了旋转的度数,如下所示:

   @keyframes shift-in {
      0%   {transform:rotateX(0deg);}
      25%  {transform:rotateX(90deg);}
      50%  {transform:rotateX(120deg);}
      75%  {transform:rotateX(180deg);}
      100% {transform:rotateX(360deg);}
   }

自定义过渡类

Vue.js 允许您通过提供以下属性来指定自己的自定义过渡类。这些属性可以添加到过渡元素中。

  • enter-class
  • enter-active-class
  • enter-to-class (版本 2.1.8+ 中添加)
  • leave-class
  • leave-active-class
  • leave-to-class (版本 2.1.8+ 中添加)

当我们想使用外部 CSS 库(如 animate.css)时,通常会使用自定义类。

让我们通过一个示例来理解自定义过渡类的概念,并查看它们在应用中如何工作。

示例

Index.html 文件:

<html>
   <head>
      <title>Vue.js Animation</title>
      <link href = "https://cdn.jsdelivr.net/npm/animate.css@3.5.1" rel = "stylesheet" type = "text/css">
      <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
      <script type = "text/javascript" src = "js/vue.js"></script>
    </head>
    <body>
     <div id = "animation" style = "text-align:center">
         <button @click = "show = !show"><span style = "font-size:25px;">Click Here</span></button>
         <transition
            name = "custom-classes-transition"
            enter-active-class = "animated swing"
            leave-active-class = "animated bounceIn">
            <p v-if = "show"><span style = "font-size:25px;">See the animation effect</span></p>
         </transition>
      </div>
      </script>
      <script src="index.js"></script>
   </body>
</html>

Index.js 文件:

var vm =  new Vue({
            el: '#animation',
            data: {
               show: true
            }
         })

程序执行后,您将看到以下输出:

输出结果:

Vue.js动画

当您单击“Click Here”按钮时,可以看到两种类型的动画。上面的示例应用的第一个动画是:

enter-active-class = "animated swing" 

输出结果:

Vue.js动画

第二个动画是:

leave-active-class = "animated bounceIn"

输出结果:

Vue.js动画

在这里,我们使用第三方库 animate.css 来演示自定义动画类的使用。

<link href = "https://cdn.jsdelivr.net/npm/animate.css@3.5.1" rel = "stylesheet" type = "text/css">

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程