Vue入门笔记#过渡

Vue过渡,可以在元素从DOM中移除,插入时自动调用过渡效果。根据设定,会适时的触发过渡效果。

在使用的目标标签里添加 transition:

<div  transition="my_transition"></div>

https://jsfiddle.net/miloer/n282tqwv/

它还可以和v-if,v-show,v-for,动态组件一起使用。

官方对Vue过渡过程的讲解:

  1. 尝试以 ID "my-transition" 查找 JavaScript 过渡钩子对象——通过Vue.transition(id, hooks) 或 transitions 选项注册。如果找到了,将在过渡的不同阶段调用相应的钩子。
  2. 自动嗅探目标元素是否有 CSS 过渡或动画,并在合适时添加/删除 CSS 类名。
  3. 如果没有找到 JavaScript 钩子并且也没有检测到 CSS 过渡/动画,DOM 操作(插入/删除)在下一帧中立即执行。

还可以利用javascript钩子来实现过渡,一开始我把钩子写在里面了,它放在外面。

官方CSS块代码有个这样的注释:

/* .expand-enter 定义进入的开始状态 */
/* .expand-leave 定义离开的结束状态 */

这个就是动画结束后的最终状态,我觉得它只是一个局部状态,最终还是受目标标签里的代码约束的。

https://jsfiddle.net/miloer/n282tqwv/1/

过渡的CSS名,

类名的添加和切换取决于 transition 特性的值。比如 transition="fade",会有三个 CSS 类名:

  1. .fade-transition 始终保留在元素上。
  2. .fade-enter 定义进入过渡的开始状态。只应用一帧然后立即删除。
  3. .fade-leave 定义离开过渡的结束状态。在离开过渡开始时生效,在它结束后删除。

如果 transition 特性没有值,类名默认是 .v-transition.v-enter 和 .v-leave

从汇智网看到的流程详解,我觉得挺好

当 show 属性改变时,Vue.js 将相应地插入或删除div元素,按照如下规则改变过渡的 CSS 类名:

如果 show 变为 falseVue.js 将:

  1. 用 beforeLeave 钩子;
  2. 添加 v-leave 类名到元素上以触发过渡;
  3. 调用 leave 钩子;
  4. 等待过渡结束(监听 transitionend 事件);
  5. 从 DOM 中删除元素并删除 v-leave 类名;
  6. 调用 afterLeave 钩子。

如果 show 变为 trueVue.js 将:

  1. 调用 beforeEnter 钩子;
  2. 添加 v-enter 类名到元素上;
  3. 把它插入 DOM
  4. 调用 enter 钩子;
  5. 强制一次CSS 布局,让 v-enter 确实生效。然后删除 v-enter 类名,以触发过渡,回到元素的原始状态;
  6. 等待过渡结束;
  7. 调用afterEnter钩子。
时间: 2024-08-13 22:46:17

Vue入门笔记#过渡的相关文章

Vue入门笔记#数据绑定语法

#数据绑定语法# #文本: 数据绑定的基础表型形式,使用“Mustache”语法(双大括号)(特意查了一下Mustache同“moustache”释义为:髭:上唇的胡子,小胡子,最起码我觉得挺形象的) 实例:https://jsfiddle.net/miloer/035ase08/ #html <div id="app"> <input type="text" v-model="message"> <div>没

Vue入门笔记(二)--基础部分之条件渲染

github地址:https://github.com/iTao9354/basicVue/tree/master/conditional%20rendering(demo01-03) 一.v-if & v-else-if & v-else 1.见下例: 其中v-else必须紧跟在v-if或v-else-if后面. 注意:v-else-if是2.1.0新增. 2. 用属性key管理不需要复用的元素 当两个元素是完全独立时,就不需要复用,此时只需添加一个具有唯一值的key属性即可. 二.v-

Vue学习笔记入门篇——组件的使用

本文为转载,原文:Vue学习笔记入门篇--组件的使用 组件定义 组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有些情况下,组件也可以是原生 HTML 元素的形式,以 is 特性扩展. 组件使用 注册 注册一个全局组件,你可以使用 Vue.component(tagName, options).组件在注册之后,便可以在父实例的模块中以自定义元素 的形式使用.

Vue学习笔记入门篇——组件的内容分发(slot)

本文为转载,原文:Vue学习笔记入门篇--组件的内容分发(slot) 介绍 为了让组件可以组合,我们需要一种方式来混合父组件的内容与子组件自己的模板.这个过程被称为 内容分发 (或 "transclusion" 如果你熟悉 Angular).Vue.js 实现了一个内容分发 API,使用特殊的 'slot' 元素作为原始内容的插槽. 编译作用域 在深入内容分发 API 之前,我们先明确内容在哪个作用域里编译.假定模板为: <child-component> {{ messa

Vue学习笔记入门篇——组件的通讯

本文为转载,原文:Vue学习笔记入门篇--组件的通讯 组件意味着协同工作,通常父子组件会是这样的关系:组件 A 在它的模版中使用了组件 B.它们之间必然需要相互通信:父组件要给子组件传递数据,子组件需要将它内部发生的事情告知给父组件.然而,在一个良好定义的接口中尽可能将父子组件解耦是很重要的.这保证了每个组件可以在相对隔离的环境中书写和理解,也大幅提高了组件的可维护性和可重用性.在 Vue 中,父子组件的关系可以总结为 props down, events up.父组件通过 props 向下传递

Vue学习笔记进阶篇——过渡状态

本文为转载,原文:Vue学习笔记进阶篇--过渡状态Vue 的过渡系统提供了非常多简单的方法设置进入.离开和列表的动效.那么对于数据元素本身的动效呢,比如: 数字和运算 颜色的显示 SVG 节点的位置 元素的大小和其他的属性 所有的原始数字都被事先存储起来,可以直接转换到数字.做到这一步,我们就可以结合 Vue 的响应式和组件系统,使用第三方库来实现切换元素的过渡状态. 状态动画和watcher 通过 watcher 我们能监听到任何数值属性的数值更新.可能听起来很抽象,所以让我们先来看看使用 T

Vue学习笔记进阶篇——列表过渡及其他

本文为转载,原文:Vue学习笔记进阶篇--列表过渡及其他本文将介绍Vue中的列表过渡,动态过渡, 以及可复用过渡是实现. 列表过渡 目前为止,关于过渡我们已经讲到: 单个节点 同一时间渲染多个节点中的一个 那么怎么同时渲染整个列表,比如使用 v-for ?在这种场景中,使用 <transition-group>组件.在我们深入例子之前,先了解关于这个组件的几个特点: 不同于 <transition>, 它会以一个真实元素呈现:默认为一个<span>.你也可以通过 tag

Vue学习笔记进阶篇——多元素及多组件过渡

本文为转载,原文:Vue学习笔记进阶篇--多元素及多组件过渡 多元素的过渡 对于原生标签可以使用 v-if/v-else.但是有一点需要注意: 当有相同标签名的元素切换时,需要通过 key 特性设置唯一的值来标记以让 Vue 区分它们,否则 Vue 为了效率只会替换相同标签内部的内容.即使在技术上没有必要,给在 <transition> 组件中的多个元素设置 key 是一个更好的实践. 示例: <transition> <button v-if="isEditing

Vue学习笔记目录

本文为转载,原文:Vue学习笔记目录 Vue介绍 Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使用Vue.js. 如果你之前已经习惯了用jQuery操作DOM,学习Vue.js时请先抛开手动操作DOM的思维,因为Vue.js是数据驱动的,你无需手动操作DOM.它通过一些特殊的HTML语法,将DOM和数据绑定起来.一旦你创建了绑定,DOM将和数据