温故而知新之VUE(四)

2018-11-07  本文已影响10人  lmmy123

进入\离开&列表过渡

单元素/组件的过渡

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-active{
  animation: bounce-in .5s
}
.v-leave-actiove{
  animation: bounce-in .5s reverse
}
@keyframes bounce-in{
  0% {
        transform:scale(0)
  }
  100%{
       tranform:scale(1)
  }
}

#自定义过渡的类名

<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>

#过渡模式

<transition name='fade' mode='out-in' ></transition>
多个组件的过渡
<transition name=''component-fade" mode="out-in">
  <component :is="view"></component>
</transition>
列表过渡

使用<transition-grounp>组件

<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> 作为根组件,然后将任何子组件放置在其中就可以了。

动态过渡
上一篇 下一篇

猜你喜欢

热点阅读