html中动画取色效果,Canvas中颜色过渡动画效果的实现

本文介绍了在Canvas中实现颜色过渡动画的技巧,包括从CSS3的简单实现到Canvas的复杂实现,以及如何处理颜色关键字的动画效果。通过案例展示了如何使用JavaScript和动画算法创建颜色变化,以及借助CSS3实现复杂canvas动画。
摘要由CSDN通过智能技术生成

在CSS3中,我们要想实现从A颜色到B颜色的过渡效果,是相当容易的,只要指定起止颜色,配合transition过渡或者animation动画都可以时间我们想要的效果。

1ce114707d6dc85ac33dc4b207ea8a72.png

但是,在中却没有这么简单,因为本质上是一个静态画布,要想实现颜色变化,需要JS去不断绘制,实现起来要比CSS实现麻烦很多。再加上颜色值本身就不一定是纯粹的数值,更增加了我们实现的难度。

本文就将通过多个案例,逐步深入,介绍一些在Canvas中的颜色处理技巧,有些技巧说不定会让你大开眼界。

Canvas颜色动画硬实现

所谓“硬实现”,就是不通过“奇巧淫技”,按照正常逻辑,一条路走到底的实现方式。

例如,我们要在中实现一个蓝色到红色的动画效果,思路如下:

1. 获取蓝色和红色的RGB色值;

2. 使用定时器,配合运动算法,R,G,B数值同时变化产生变色。

具体如何实现,可以参见这个案例。您可以狠狠地点击这里:颜色数值变化下的颜色动画demo

实现的效果如下GIF截图(上面是Canvas实现,下面是CSS3实现,方便效果对比):

21a9a7131ff240c31511e2164f014330.gif

完整JS代码如下:var canvas = document.getElementById('canvas');

var context = canvas.getContext('2d');

var width = canvas.width, height = canvas.height;

// 动画执行的帧数

var start = 0, frames = 200;

// 过渡颜色 蓝色 到 红色

var from = [0, 0, 255];

var to = [255, 0, 0];

// 动画算法,这里使用Cubic.easeOut算法

var cubicEaseOut = function(t, b, c, d) {

return c * ((t = t/d - 1) * t * t + 1) + b;

};

// 绘制方法

var draw = function () {

context.clearRect(0, 0, width, height);

// 计算此时r, g, b数值

var r = cubicEaseOut(start, from[0], to[0] - from[0], frames);

var g = cubicEaseOut(start, from[1],

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值