温故而知新之VUE(四)

进入\离开&列表过渡

单元素/组件的过渡

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

动态过渡
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,383评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,028评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 171,486评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,786评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,793评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,297评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,685评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,655评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,192评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,223评论 3 345
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,343评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,966评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,656评论 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,130评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,257评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,869评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,407评论 2 365

推荐阅读更多精彩内容

  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,052评论 0 29
  • 混合 组件系统是Vue的核心,如何合理的规划组件,是我们在开发中需要深入思考的问题,我个人习惯把一些组件使用逻辑和...
    li4065阅读 849评论 0 1
  • # 传智播客vue 学习## 1. 什么是 Vue.js* Vue 开发手机 APP 需要借助于 Weex* Vu...
    再见天才阅读 3,565评论 0 6
  • 概述 Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。包括以下工具: 在 CSS 过渡和...
    寒梁沐月阅读 1,345评论 0 3
  • 在AngularJS应用中创建动画,有三种途径: 使用CSS3动画 使用JavaScript动画 使用CSS3过渡...
    oWSQo阅读 1,461评论 0 3