23个css动画效果,持续更新中...

我们都知道了在 Vue2 中的响应式是通过 Object.defineProperty 重写 get set,进行数据劫持来实现的。那么 Vue3 中是如何实现的呢?

要了解响应式,我们先认识一下副作用函数。 本文参考自霍春阳大大的《Vue.js 设计与实现》

副作用函数

副作用函数指的就是会产生副作用的函数(听君一席话,胜读一席话 🤣),代码如下

let a = 1

function effect(x) {a++return a + x
}
effect(1) // 2
console.log(a) // 2 

effect 函数中执行自身逻辑中,修改了全局变量 a,对其他使用的产生了影响,那么这就是一个副作用,这种会影响除了自身局部变量以外的变量的函数,我们称之为 “副作用函数”

响应式数据

理解了副作用函数,那么我看来看一下什么是响应式。假设在一个副作用函数读取一个变量的属性并赋值,代码如下

let obj = {text: 'hello effect'
}

function effect() {document.body.innerHTML = obj.text
}
effect() 

effect 函数执行后,页面会显示 hello effect,同时当我们再次修改 obj.text = "hello world" ,effect 再次执行,页面同步刷新成为 hello world,那么我们就实现了数据的响应式。 接下来让我们来尝试实现以下最基本的响应式吧。

no bb,show me the code! 🤐

响应式数据的基本实现

由上面可知,只要我们再 obj.text 每次变化的时候,重新执行 effect 不就好了么?是的就这么简单。 核心就是代理对象 “Proxy” 来实现。代码如下

// 原始数据
l
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 掌握CSS动画属性 在CSS,我们可以使用以下动画属性来实现动画效果: - animation-name:动画名称,可以通过@keyframes定义。 - animation-duration:动画持续时间,以秒或毫秒为单位。 - animation-timing-function:动画时间函数,用于定义动画的速度曲线。 - animation-delay:动画延迟时间,以秒或毫秒为单位。 - animation-iteration-count:动画循环次数,可以是具体的次数或infinite(无限次循环)。 - animation-direction:动画播放方向,可以是normal(正向播放)、reverse(反向播放)、alternate(交替正反向播放)或alternate-reverse(交替反正向播放)。 - animation-fill-mode:动画填充模式,用于定义动画播放前后元素的状态。可以是none、forwards、backwards或both。 - animation-play-state:动画播放状态,可以是running(运行)或paused(暂停)。 2. 掌握Vue动画使用方法 在Vue,我们可以使用transition来实现动画效果。具体方法如下: 1. 在HTML,将需要添加动画的元素包裹在<transition>标签。 ``` <transition name="fade"> <p v-show="show">Hello, world!</p> </transition> ``` 2. 在CSS,定义动画效果。名称与<transition>标签的name属性相同。 ``` .fade-enter-active, .fade-leave-active { transition: opacity .5s; } .fade-enter, .fade-leave-to { opacity: 0; } ``` 3. 在Vue实例,定义元素的状态切换。 ``` new Vue({ el: '#app', data: { show: true } }) ``` 以上示例,当show为true时,p标签会以fade动画效果出现;当show为false时,p标签会以fade动画效果消失。 除了以上示例的fade动画效果外,Vue还支持其他几动画效果,如slide、collapse等。具体使用方法可以查看Vue官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值