• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >vue > Vue.2.0.5过渡效果使用技巧

Vue.2.0.5过渡效果使用技巧

作者:jiangxiaobo 字体:[增加 减小] 来源:互联网 时间:2017-05-30

本文主要包含wifi万能钥匙2.0.5,我的世界2.0.5,剑圣与剑圣2.0.5,剑圣vs剑圣2.0.5,剑圣与剑圣2.0.5攻略等相关知识,jiangxiaobo 希望在学习及工作中可以帮助到您

概述

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

包括以下工具:

  1. 在 CSS 过渡和动画中自动应用 class
  2. 可以配合使用第三方 CSS 动画库,如 Animate.css
  3. 在过渡钩子函数中使用 JavaScript 直接操作 DOM
  4. 可以配合使用第三方 JavaScript 动画库,如 Velocity.js

在这里,我们只会讲到进入、离开和列表的过渡, 你也可以看下一节的 管理过渡状态.

单元素/组件的过渡

Vue 提供了 transition 的封装组件,在下列情形中,可以给任何元素和组件添加 entering/leaving 过渡

  • 条件渲染 (使用 v-if)
  • 条件展示 (使用 v-show)
  • 动态组件
  • 组件根节点

这里是一个典型的例子: 

<div id="demo">
 <button v-on:click="show = !show">
 Toggle
 </button>
 <transition name="fade">
 <p v-if="show">hello</p>
 </transition>
</div>
</div>
new Vue({
 el: '#demo',
 data: {
 show: true
 }
})
</div>
.fade-enter-active, .fade-leave-active {
 transition: opacity .5s
}
.fade-enter, .fade-leave-active {
 opacity: 0
}
</div>

元素封装成过渡组件之后,在遇到插入或删除时,Vue 将

1.自动嗅探目标元素是否有 CSS 过渡或动画,并在合适时添加/删除 CSS 类名。

2.如果过渡组件设置了过渡的 JavaScript 钩子函数,会在相应的阶段调用钩子函数。

3.如果没有找到 JavaScript 钩子并且也没有检测到 CSS 过渡/动画,DOM 操作(插入/删除)在下一帧中立即执行。(注意:此指浏览器逐帧动画机制,与 Vue,和Vue的nextTick 概念不同)

过渡的-CSS-类名

会有 4 个(CSS)类名在 enter/leave 的过渡中切换

1.v-enter: 定义进入过渡的开始状态。在元素被插入时生效,在下一个帧移除。

2.v-enter-active: 定义进入过渡的结束状态。在元素被插入时生效,在transition/animation 完成之后移除。

3.v-leave: 定义离开过渡的开始状态。在离开过渡被触发时生效,在下一个帧移除。

4.v-leave-active: 定义离开过渡的结束状态。在离开过渡被触发时生效,在transition/animation 完成之后移除。

对于这些在 enter/leave 过渡中切换的类名,v- 是这些类名的前缀。使用<name="my-transition>" 可以重置前缀,比如 v-enter 替换为my-transition-enter。

v-enter-active 和 v-leave-active 可以控制 进入/离开 过渡的不同阶段,在下面章节会有个示例说明。

CSS 过渡

常用的过渡都是使用 CSS 过渡。

下面是一个简单例子:

<div id="example-1">
 <button @click="show = !show">
 Toggle render
 </button>
 <transition name="slide-fade">
 <p v-if="show">hello</p>
 </transition>
</div>
</div>
new Vue({
 el: '#example-1',
 data: {
 show: true
 }
})
</div>
/* 可以设置不同的进入和离开动画 */
/* 设置持续时间和动画函数 */
.slide-fade-enter-active {
 transition: all .3s ease;
}
.slide-fade-leave-active {
 transition: all .8s cubic-bezier(1.0, 0.5, 0.8, 1.0);
}
.slide-fade-enter, .slide-fade-leave-active {
 padding-left: 10px;
 opacity: 0;
}
</div>

CSS 动画

CSS 动画用法同 CSS 过渡,区别是在动画中 v-enter 类名在节点插入 DOM 后不会立即删除,而是在 animationend 事件触发时删除。

示例: (省略了兼容性前缀) 

<div id="example-2">
 <button @click="show = !show">Toggle show</button>
 <transition name="bounce">
 <p v-if="show">Look at me!</p>
 </transition>
</div>
</div>
new Vue({
 el: '#example-2',
 data: {
 show: true
 }
})
</div>
.bounce-enter-active {
 animation: bounce-in .5s;
}
.bounce-leave-active {
 animation: bounce-out .5s;
}
@keyframes bounce-in {
 0% {
 transform: scale(0);
 }
 50% {
 transform: scale(1.5);
 }
 100% {
 transform: scale(1);
 }
}
@keyframes bounce-out {
 0% {
 transform: scale(1);
 }
 50% {
 transform: scale(1.5);
 }
 100% {
 transform: scale(0);
 }
}
</div>

自定义过渡类名

我们可以通过以下特性来自定义过渡类名:

  • enter-class
  • enter-active-class
  • leave-class
  • leave-active-class

他们的优先级高于普通的类名,这对于 Vue 的过渡系统和其他第三方 CSS 动画库,如Animate.css 结合使用十分有用。

示例:

<link href="https://unpkg.com/animate.css@3.5.1/animate.min.css" rel="external nofollow" rel="stylesheet" type="text/css">
<div id="example-3">
 <button @click="show = !show">
 Toggle render
 </button>
 <transition
 name="custom-classes-transition"
 enter-active-class="animated tada"
 leave-active-class="animated bounceOutRight"
 >
 <p v-if="show">hello</p>
 </transition>
</div>
</div>
new Vue({
 el: '#example-3',
 data: {
 show: true
 }
})
</div>

同时使用 Transitions 和 Animations

Vue 为了知道过渡的完成,必须设置相应的事件监听器。它可以是 transitionend 或animationend ,这取决于给元素应用的 CSS 规则。如果你使用其中任何一种,Vue 能自动识别类型并设置监听。

但是,在一些场景中,你需要给同一个元素同时设置两种过渡动效,比如 animation 很快的被触发并完成了,而 transition 效果还没结束。在这种情况中,你就需要使用type 特性并设置 animation 或 transition 来明确声明你需要 Vue 监听的类型。

JavaScript 钩子

可以在属性中声明 JavaScript 钩子

<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>
</div>
// ...
methods: {
 // --------
 // 进入中
 // --------
 beforeEnter: function (el) {
 // ...
 },
 // 此回调函数是可选项的设置
 // 与 CSS 结合时使用
 enter: function (el, done) {
 // ...
 done()
 },
 afterEnter: function (el) {
 // ...
 },
 enterCancelled: function (el) {
 // ...
 },
 // --------
 // 离开时
 // --------
 beforeLeave: function (el) {
 // ...
 },
 // 此回调函数是可选项的设置
 // 与 CSS 结合时使用
 leave: function (el, done) {
 // ...
 done()
 },
 afterLeave: function (el) {
 // ...
 },
 // leaveCancelled 只用于 v-show 中
 leaveCancelled: function (el) {
 // ...
 }
}
</div>

这些钩子函数可以结合 CSS transitions/animations 使用,也可以单独使用。

当只用 JavaScript 过渡的时候, 在 enter 和 leave 中,回调函数 done 是必须的 。 否则,它们会被同步调用,过渡会立即完成。

推荐对于仅使用 JavaScript 过渡的元素添加 v-bind:css="false",Vue 会跳过 CSS 的检测。这也可以避免过渡过程中 CSS 的影响。

一个使用 Velocity.js 的简单例子:

<!--
Velocity works very much like jQuery.animate and is
a great option for JavaScript animations
-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/velocity/1.2.3/velocity.min.js"></script>
<div id="example-4">
 <button @click="sh
  


 

您可能想查找下面的文章:

  • Vue.2.0.5过渡效果使用技巧

相关文章

  • 2017-05-30Vue中使用vux的配置详解
  • 2017-05-30Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
  • 2017-05-30Vuejs第八篇之Vuejs组件的定义实例解析
  • 2017-05-30Vue分页组件实例代码
  • 2017-05-30vue分类筛选filter方法简单实例
  • 2017-05-30Vue.js动态组件解析
  • 2017-05-30vue.js实现请求数据的方法示例
  • 2017-05-30详解VUE的状态控制与延时加载刷新
  • 2017-05-30Vue.js仿Metronic高级表格(一)静态设计
  • 2017-05-30详解Vuejs2.0之异步跨域请求

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • Vue计算属性的学习笔记
    • vue2.0结合DataTable插件实现表格动态刷新的方法详解
    • 浅析vue component 组件使用
    • 简单实现Vue的observer和watcher
    • Vue分页组件实例代码
    • VUEJS实战之构建基础并渲染出列表(1)
    • 详解vue.js全局组件和局部组件
    • Vue.js实现表格动态增加删除的方法(附源码下载)
    • vue实现添加标签demo示例代码
    • Vuex之理解state的用法实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有