vue 过渡状态

vue的过渡系统提供了非常多简单的方法设置进入、离开和列表的动效。那么对于数据元素本身的动效呢,例:

  • 数字和运算
  • 颜色的显示
  • svg节点的位置
  • 元素的大小和其他的属性

所有的原始数字都被事先存储起来,可以直接转换到数字。做到这一步,我们就可以结合vue的响应式和组件系统,使用第三方库来实现切换元素的过渡状态。

状态动画与watcher

通过watcher我们能监听到任何数值属性的数值更新,可能听起来很抽象,所以让我们先来看看使用Tween.js一个例子:

<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>

<div id="animated-number-demo">

<input v-model.number="number" type="number" step="20">

<p>{{ animatedNumber }}</p>

</div>

new Vue({

el: ‘#animated-number-demo‘,

data: {

number: 0,

animatedNumber: 0

},

watch: {

number: function(newValue, oldValue) {

var vm = this

function animate () {

if (TWEEN.update()) {

requestAnimationFrame(animate)

}

}

new TWEEN.Tween({ tweeningNumber: oldValue })

.easing(TWEEN.Easing.Quadratic.Out)

.to({ tweeningNumber: newValue }, 500)

.onUpdate(function () {

vm.animatedNumber = this.tweeningNumber.toFixed(0)

})

.start()

animate()

}

}

})

当你把数值更新时,就会发出动画。这个是一个不错的演示,但是对于不能直接像数字一样存储的值,比如css中的color的值。

通过下面的例子我们来通过color.js实现一个例子:

<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>

<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>

<div id="example-7">

<input

v-model="colorQuery"

v-on:keyup.enter="updateColor"

placeholder="Enter a color"

>

<button v-on:click="updateColor">Update</button>

<p>Preview:</p>

<span

v-bind:style="{ backgroundColor: tweenedCSSColor }"

class="example-7-color-preview"

></span>

<p>{{ tweenedCSSColor }}</p>

</div>

动态状态转换

就像vue的过渡组件一样,数据背后状态转换会时时更新,这对于原型设计非常有用。当你修改一些变量,即使是一个简单的svg多边形也可以实现很多难以想象的效果。

通过组件组织过渡

管理太多的状态转换会很快的增加vue实例或者组件的复杂性,幸好很多的动画可以提取到专用的子组件。

我们将之前的示例改写一下:

<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>

<div id="example-8">

<input v-model.number="firstNumber" type="number" step="20"> +

<input v-model.number="secondNumber" type="number" step="20"> =

{{ result }}

<p>

<animated-integer v-bind:value="firstNumber"></animated-integer> +

<animated-integer v-bind:value="secondNumber"></animated-integer> =

<animated-integer v-bind:value="result"></animated-integer>

</p>

</div>

// 这种复杂的补间动画逻辑可以被复用

// 任何整数都可以执行动画

// 组件化使我们的界面十分清晰

// 可以支持更多更复杂的动态过渡

// strategies.

Vue.component(‘animated-integer‘, {

template: ‘<span>{{ tweeningValue }}</span>‘,

props: {

value: {

type: Number,

required: true

}

},

data: function () {

return {

tweeningValue: 0

}

},

watch: {

value: function (newValue, oldValue) {

this.tween(oldValue, newValue)

}

},

mounted: function () {

this.tween(0, this.value)

},

methods: {

tween: function (startValue, endValue) {

var vm = this

function animate () {

if (TWEEN.update()) {

requestAnimationFrame(animate)

}

}

new TWEEN.Tween({ tweeningValue: startValue })

.to({ tweeningValue: endValue }, 500)

.onUpdate(function () {

vm.tweeningValue = this.tweeningValue.toFixed(0)

})

.start()

animate()

}

}

})

// All complexity has now been removed from the main Vue instance!

new Vue({

el: ‘#example-8‘,

data: {

firstNumber: 20,

secondNumber: 40

},

computed: {

result: function () {

return this.firstNumber + this.secondNumber

}

}

})

我们能在组件中结合使用这一节讲到各种过渡策略和vue内建的过渡系统。总之,对于完成各种过渡动效几乎没有阻碍。

赋予设计声明

只要一个动画,就可以带来生命。不幸的是,当设计师创建图标、logo 和吉祥物的时候,他们交付的通常都是图片或静态的 SVG。所以,虽然 GitHub 的章鱼猫、Twitter 的小鸟以及其它许多 logo 类似于生灵,它们看上去实际上并不是活着的。

vue可以帮到你,因为svg的本质是数据,我们只需要这些动物兴奋,思考和境界的样例

然后vue就可以辅助完成这几种状态之间的过渡动画,来制作你的欢迎页面,加载指示,以及更加带有情感的提示。

时间: 2024-10-10 23:57:33

vue 过渡状态的相关文章

Vue过渡状态

前面的话 Vue 的过渡系统提供了非常多简单的方法设置进入.离开和列表的动效.那么对于数据元素本身的动效呢?包括数字和运算.颜色的显示.SVG 节点的位置.元素的大小和其他的属性等.所有的原始数字都被事先存储起来,可以直接转换到数字.做到这一步,我们就可以结合 Vue 的响应式和组件系统,使用第三方库来实现切换元素的过渡状态 状态动画 通过watcher,能监听到任何数值属性的数值更新 <div id="animated-number-demo"> <input v-

vue学习(2)关于过渡状态

vue过渡使用transition的封装组件,有4个(css)类名在  enter/leave的过渡状态中切换 1,v-enter:定义进入过渡的开始状态,在元素被插入时生效,在下一帧时移除 2,v-enter-active定义进入过渡的结束状态,在元素被插入时生效,在 transition/animation完成之后移除. 3,v-leave定义离开过渡的开始状态,在离开过渡被触发时生效,在下一帧移除. 4,v-leave-active定义离开过渡的结束状态,在离开过渡被触发时生效,在tran

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

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

vue 过渡的坑

说一下自己使用vue过渡时爬的坑 第一 <transition v-for=" "   key=" "  @before-enter="beforeEnter"   @enter="enter"  @after-enter="afterEnter"> <div> ... </div> </transition> <transiton-group tag=

Vue过渡&amp;循环切换&amp;放大缩小动画

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue过渡与循环切换和放大缩小</title> <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> <style> .box { margin-lef

Vue 过渡

过渡 通过 Vue.js 的过渡系统,可以在元素从 DOM 中插入或移除时自动应用过渡效果.Vue.js 会在适当的时机为你触发 CSS 过渡或动画,你也可以提供相应的 JavaScript 钩子函数在过渡过程中执行自定义的 DOM 操作. 为了应用过渡效果,需要在目标元素上使用 transition 特性: <div v-if="show" transition="my-transition"></div> transition 特性可以与

[原]浅谈vue过渡动画,简单易懂

在vue中什么是动画 开始先啰嗦一下,动画的解释(自我理解??) 在一个标签里面的类容,我们视觉看到它,这时候,这个标签以什么形式出现,中间变化了什么,并且以什么形式消失,是有一个过渡的存在的方式,我叫做动画 (不是那种干出,干消失哈??,大神原谅我粗糙的说辞\(^o^)/~) 闲言碎语不多讲,上干货了 在vue中,提供给我们一个很好写过渡动画的内置组件transition 基本用法就是给我们需要动画的标签外面嵌套transition标签,并且给上属性,起码name不要忘了 <transitio

Vue 过渡动画

<!DOCTYPE html> <html> <head> <title>过渡动画</title> <style type="text/css"> /*必须所有的元素 或者属性 0.3s 以ease的形式*/ .show-enter-active, .show-leave-active{ transition:all 1s ease; padding-left: 10px; } /*.show-enter 定义进入

Vue中状态管理——Vuex

vuex是一个专门为vue.js设计的状态管理模式,并且也可以使用devtools进行调试. 在vuex出现之前,vue里面的状态是属于'单向数据流'.举个官网的例子: new Vue({ // state data () { return { count: 0 } }, // view template: `<div>{{ count }} </div`, // actions methods: { increment () { this.count++ } } }) 其中 state