七彩流动变化背景

news/2025/2/16 1:38:56/

在用linear-gradient设置彩虹般的背景时,忽然想到如果能让它们流动起来一定更好看。在网上搜了一波后发现并没有别人提出这个想法并实现,于是便自己着手写了起来。

代码见Github - colorful-linear-animate

 

颜色变化原理

一开始想到的当然是Jquary-ui里的颜色animate,但似乎没什么方法可以把那种变化移植到linear的多彩背景变化中来。

于是首先要弄清楚颜色之间相互转换时它们的rgb是怎样变化的。

因为我要制造的是七彩的变化,可以看到跟常见的rgb选框中右边的颜色条是一样的:

于是拉动颜色条观察rgb数值,发现从底下的红色一直变化到最上面回到红色的过程中,rgb是以green-blue-red的方向在变化的,每次变化为左边的颜色并将之替换。

例如上图里一开始是#ff8181,在进度条往上拉动的过程中,中间的green色81一直增加至左边的ff,一直变化到#ffff81,接着左边的ff就一直减少至#81ff81,如此类推,之后是#8181ff,最后再回到#ff8181。

 

实现方法

根据颜色的变化方式,即可把linear-gradient分为6个节点,恰好每次增加20%,即一开始的linear-gradient值为

(#ff8181 0%, #ffff81 20%, #81ff81 40%, #81ffff 60%, #8181ff 80%, #ff81ff 100%)

如此从100%那下一个变化的颜色是#ff8181,即回到了0%的颜色,呈现出来是这样的:

接着最重要的来了,如何让它动起来呢?

我的实现方法是,让linear各个节点的颜色不断变化到下一个颜色(最后一个即变化到第一个),即在setInterval里让各个节点的rgb数值+1或-1变化,一直变化到下一个颜色,之后再继续变化到下一个颜色。

通俗说起来就是各个颜色层之间总在追赶着下一个颜色层,这样循环反复,即实现了流动变化的效果。

 

最终写出来的代码参见github,用户还可自由控制颜色的鲜艳度、方向、变化速度。

示例可参见这里的最后~

 


http://www.ppmy.cn/news/678542.html

相关文章

七彩遥控灯方案开发

在饭店、酒吧以及宾馆等场所,我们经常可以看见各种七彩灯饰,可以按照一定的规律循环闪烁,依次闪烁出红、绿、蓝、黄、紫、青、白七种颜色的灯光。七彩灯饰一般都需要使用单片机作为控制器,通过电路设计,板块搭建完成产…

用python七巧板模型拼图形,七彩课堂|有趣的图形拼组

原标题:七彩课堂|有趣的图形拼组 你们认识平面图形吗?知道什么是七巧板吗? 顾名思义,七巧板是由七块板组成的。由于等积变换,所以这七块板可拼成许多图形(1600种以上),例如:三角形、…

七彩动态|棱镜七彩获“北京国家金融科技认证中心”颁发的「金融开源技术服务商能力评估证书」

11月13日,由北京金融科技产业联盟举办的第二届会员大会第四次会议在北京召开。 聚焦开源应用与安全,棱镜七彩通过北京国家金融科技认证中心“金融业开源评估”—金融开源技术服务商能力评估,并获得由北京国家金融科技认证中心颁发的“金融开…

HTML5 Canvas编写五彩连珠(4):动画

上一节中,我们留下了一个flyin的方法没有介绍,这里想单独写一篇html5的动画实现。 在第二节中我们实现了画一个泡泡,并且成功的擦除了泡泡,但当时也说了别把棋盘的线给擦掉了,所以做了偏移量。所以说html5 Canvas还是低…

unity3d七彩珠游戏

内附源码,内有消除棋子算法和寻路算法 下载地址: http://download.csdn.net/detail/u014285925/9919185

妙语连珠

Money is not everything. Theres Mastercard & Visa. 钞票不是万能的,有时还需要信用卡. One should love animals. They are so tasty. 每个人都应该热爱动物,因为它们很好吃. Save water. Shower with your girlfriend. 要节约用水,尽量和女友一起洗澡. Love the …

七彩蟒蛇绘制

第2周的课后练习里,有一道题目,要求修改“蟒蛇绘制”程序,对Python 蟒蛇的每个部分采用不同颜色,绘制一条彩色蟒蛇。 原蟒蛇绘制程序如下: 因为刚开始学Python,不太熟悉,所以自己加了一些注释…

画七彩五角星

using (Graphics graphics this.CreateGraphics()){graphics.Clear(Color.White); Point[] points {//顺时针点坐标new Point(80, 0), new Point(100, 60), new Point(160, 60), new Point(110, 100),new Point(130, 160), new Point(80, 120), new Point(30, 160), new Poi…