美文网首页
温故而知新之VUE(四)

温故而知新之VUE(四)

作者: lmmy123 | 来源:发表于2018-11-07 21:11 被阅读10次

进入\离开&列表过渡

单元素/组件的过渡

transition

// 没有name,css默认为v-enter...
<transition name='fade'>
    <p v-if="show">hello</p>
</transition>
.fade-enter-active,.fade-leave-active{
  transition: opacity .5s
}
.fade-enter,.fade-leave-to{
  opacity:0
}

#过渡的类名

  • v-enter 定义进入过渡的开始状态,元素插入之前生效
  • v-enter-active 定义进入过渡生效时的状态,在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除,定义进入过渡的过程时间,延迟和曲线函数
  • v-enter-to 2.1.8+ 定义进入过渡的结束状态
  • v-leave 定义离开过渡的开始状态
  • v-leave-active 定义离开过渡生效时的状态
  • v-leave-to 2.1.8+ 定义离开过渡的结束状态
    #css动画
    动画中的v-enter类名在节点插入DOM后不会立即删除,而是在animationend事件触发时删除
.v-active{
  animation: bounce-in .5s
}
.v-leave-actiove{
  animation: bounce-in .5s reverse
}
@keyframes bounce-in{
  0% {
        transform:scale(0)
  }
  100%{
       tranform:scale(1)
  }
}

#自定义过渡的类名

  • 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)
    #同时使用过渡和动画
    #显性的过渡持续时间
    2.2.0+新增
<transition :duration="{enter: 500, leave: 800}"></transition>

#javascript钩子

<transition 
 @before-enter='beforeEnter'
 @enter="enter" 
 @after-enter="afterEnter" 
 @enter-cancelled="enterCancelled"
 @before-leave="beforeLeave" 
 @leave="leave" 
 @after-leave="afterLeave"
 @leave-cancelled="leaveCancelled" ></transition>

// methods中定义这些方法

当只用JavaScript过渡的时候,在enter和leave中必须使用done进行回调,否则会被同步调用
推荐对于仅使用JavaScript过渡的元素添加"v-bind:css='false'",vue会跳过css的检测,避免过渡过程中CSS的影响
#初始渲染的过渡
可以通过appear特性设置节点在初始渲染的过渡

<transition appear appear-class="xx" appear-to-class="sss" appear-active-class='dfsdf'></transition>

#多个元素的过渡
对于原生标签可以使用v-if/v-else

// 设置key
<transition>
    <button v-if="isEditing" key='save'>save</button>
    <button v-else key='edit'>edit</button>
</transition>
// 简写
<transition>
  <button :key="text">
      {{text? 'save': 'edit'}}
  </button>
</transition>

#过渡模式

  • in-out 新元素先进行过渡,完成之后当前元素过渡离开
  • out-in 当前元素先进行过渡,完成之后新元素过渡进入
<transition name='fade' mode='out-in' ></transition>
多个组件的过渡
<transition name=''component-fade" mode="out-in">
  <component :is="view"></component>
</transition>
列表过渡

使用<transition-grounp>组件

  • 会呈现出一个真实的标签<span>,可以通过tag修改
  • 过渡模式 mode不可用
  • 内部元素总是需要提供唯一的key属性值
<transition-group name='list' tag='p'>
  <span v-for="item in items" :key='item'>{{ item }}</span>
</transition-group>
列表的排序过渡

<transition-group>还可以改变定位,使用v-move特性
通过name属性来自定义前缀,也可以通过move-class属性手动设置

<transition-group name='fade' tag='ul'>
  <liv-for="item in items" :key='item'>{{ item }}</li>
</transition>
.fade-move{
  transition: transform 1s;
}
可复用的过渡

要创建一个可复用过渡组件,你需要做的就是将 <transition> 或者 <transition-group> 作为根组件,然后将任何子组件放置在其中就可以了。

动态过渡

相关文章

网友评论

      本文标题:温故而知新之VUE(四)

      本文链接:https://www.haomeiwen.com/subject/pmbmxqtx.html