热门关键字:
jquery > jquery教程 > html5 > Vue学习之动画小结(六)

Vue学习之动画小结(六)

654
作者:管理员
发布时间:2020/3/11 15:28:48
评论数:0
转载请自觉注明原文:http://www.jq-school.com/Show.aspx?id=1019

  一、Vue中实现动画的方式:https://cn.vuejs.org/v2/guide/transitions.html

  Vue在插入、更新或者移除DOM时,提供多种不同方式的应用过渡效果。

  包括以下工具:

  在CSS过渡和动画中自动应用class

  可以配合使用第三方CSS动画库,如Animate.css

  在过渡钩子函数中使用JavaScript直接操作DOM

  可以配合使用第三方JavaScript动画库,如Velocity.js

  二、使用过渡类名实现动画:

  <!DOCTYPEhtml>

  <htmllang="en">

  <head>

  <metacharset="UTF-8"/>

  <meta

  name="viewport"

  content="width=

  ,initial-scale=1.0"

  />

  <metahttp-equiv="X-UA-Compatible"content="ie=edge"/>

  <title>donghua</title>

  <linkrel="stylesheet"href="./lib/animate.css"/>

  <style>

  /*2.自定义两组样式,来控制transition内部的元素实现动画*/

  /*v-enter【这是一个时间点】是进入之前,元素的起始状态,此时还没有开始进入*/

  /*v-leave-to【这是一个时间点】是动画离开之后,离开的终止状态,此时,元素动画已经结束了*/

  .v-enter,

  .v-leave-to{

  opacity:0;

  /*沿着X轴*/

  /*transform:translateX(150px);*/

  /*沿着Y轴*/

  transform:translateY(150px);

  }

  /*v-enter-active【入场动画的时间段】*/

  /*v-leave-active【离场动画的时间段】*/

  .v-enter-active,

  .v-leave-active{

  transition:all0.8sease;

  }

  </style>

  </head>

  <body>

  <scriptsrc="./lib/vue.js"></script>

  <divid="app">

  <inputtype="button"value="toggle"@click="flag=!flag"/>

  <!--需求:点击按钮,让H3显示,再点击,让H3隐藏-->

  <!--1、使用transition元素,把需要被动画控制的元素,包裹起来-->

  <transition>

  <h3v-if="flag">这是一个H3</h3>

  </transition>

  </div>

  <script>

  varvm=newVue({

  el:"#app",

  data:{

  flag:false

  }

  });

  </script>

  </body>

  </html>

  三、使用animate.css类实现动画:

  <!DOCTYPEhtml>

  <htmllang="en">

  <head>

  <metacharset="UTF-8"/>

  <meta

  name="viewport"

  content="width=

  ,initial-scale=1.0"

  />

  <metahttp-equiv="X-UA-Compatible"content="ie=edge"/>

  <title>donghua</title>

  <linkrel="stylesheet"href="./lib/animate.css"/>

  </head>

  <body>

  <scriptsrc="./lib/vue.js"></script>

  <divid="app">

  <inputtype="button"value="toggle"@click="flag=!flag"/>

  <!--使用:duration="{enter:200,leave:400}"来分别设置入场的时长和离场的时长-->

  <transition

  enter-active-class="bounceIn"

  leave-active-class="bounceOut"

  :duration="{enter:200,leave:400}"

  >

  <h3v-if="flag"class="animated">这是一个H3</h3>

  </transition>

  </div>

  <script>

  varvm=newVue({

  el:"#app",

  data:{

  flag:false

  }

  });

  </script>

  </body>

  </html>

  四、使用钩子函数:

  可以在属性中声明JavaScript钩子

  <!DOCTYPEhtml>

  <htmllang="en">

  <head>

  <metacharset="UTF-8"/>

  <title>donghua</title>

  <style>

  /*定义动画小球*/

  .ball{

  width:15px;

  height:15px;

  border-radius:50%;

  background-color:red;

  }

  </style>

  </head>

  <body>

  <scriptsrc="./lib/vue.js"></script>

  <divid="app">

  <inputtype="button"value="从碗里出去"@click="flag=!flag"/>

  <!--1.使用transition元素把小球包裹起来-->

  <transition

  @before-enter="beforeEnter"

  @enter="enter"

  @after-enter="afterEnter"

  >

  <divclass="ball"v-show="flag"></div>

  </transition>

  </div>

  <script>

  varvm=newVue({

  el:"#app",

  data:{

  flag:false

  },

  methods:{

  //动画钩子函数的第一个参数:el,表示要执行动画的那个DOM元素,是个原生的JSDOM对象

  //大家可以认为,el是通过docunment.getElementById('')方式获取到的原生JSDOM对象

  beforeEnter(el){

  //beforeEnter表示动画入场之前,此时,动画尚未开始,可以在其中设置元素开始动画之前的起始样式

  //设置小球开始动画之前的起始位置

  el.style.transform="translate(0,0)";

  },

  enter(el,done){

  //这句话没有实际的作用,但是如果不写,出不来动画效果;

  //可以认为el.offsetWidth会强制动画刷新

  el.offsetWidth;

  //enter表示动画开始之后的样式,这里,可以设置小球完成动画之后的,结束状态

  el.style.transform="translate(150px,450px)";

  el.style.transition="all1sease";

  //这里的done,起始就是afterEnter这个函数,也就是说done是afterEnter函数的引用

  done();

  },

  afterEnter(el){

  //动画完成后,会调用afterEnter

  //console.log("ok");

  //这句话,第一个功能就是控制小球的显示与隐藏;

  //第二个功能:直接跳过后半场动画,让flag标识符直接变为false;

  //当第二次再点击按钮的时候,flag:false--->true

  this.flag=!this.flag;

  //Vue把一个完整的动画,使用钩子函数,拆分为了两部分:

  //我们使用flag标识符,来表示动画的切换flag:false-->true-->false

  }

  }

  });

  </script>

  </body>

  </html>

  <transition

  v-on:before-enter="beforeEnter"

  v-on:enter="enter"

  v-on:after-enter="afterEnter"

  v-on:enter-cancelled="enterCancelled"

  v-on:before-leave="beforeLeave"

  v-on:leave="leave"

  v-on:after-leave="afterLeave"

  v-on:leave-cancelled="leaveCancelled"

  >

  <!--...-->

  </transition>





如果您觉得本文的内容对您的学习有所帮助:支付鼓励



关键字:html
友荐云推荐