gradient

更新时间:2022-12-26 14:29:38 阅读: 评论:0


2022年12月26日发(作者:jacket)

js实现颜⾊阶梯渐变效果(Gradient算法)

html中颜⾊可以使⽤rgb和hex⽅式来表⽰。

在⾊彩中,⾊相、明度、纯度也都可以产⽣渐变效果,并会表现出具有丰富层次的美感。本⽂主要讲述两种颜⾊RGB数值的

梯级渐变算法。

其中如如16进制颜⾊如#336600分别表⽰rgb模式中r的值为16进制33(即),g的值为16进制的66,和b为16进制的00,转换

后⽤rgb完整表述为:rgb(51,102,0)。

其中使⽤16进制进⾏加减乘除不⽅便,尤其还使⽤了rgb的16进制颜⾊组合(#336600)。因此我们可以将16进制转换为rgb

单个进⾏梯级运算在进⾏组合。

已知:RStart=50,REnd=200,RStart、REnd之间平均分成3份(Step=3),求每份的数值(StepN)分别是多少。

公式:Gradient=RStart+(REnd-RStart)/Step*N(第N步的颜⾊rgb中R的值)

实现⽅法⾮常简单,只是需要将颜⾊从rgb到hex的互转。

实现代码:

/*

//作者yanue

//参数:

//startColor:开始颜⾊hex

//endColor:结束颜⾊hex

//step:⼏个阶级(⼏步)

*/

functiongradientColor(startColor,endColor,step){

startRGB=gb(startColor);//转换为rgb数组模式

startR=startRGB[0];

startG=startRGB[1];

startB=startRGB[2];

endRGB=gb(endColor);

endR=endRGB[0];

endG=endRGB[1];

endB=endRGB[2];

sR=(endR-startR)/step;//总差值

sG=(endG-startG)/step;

sB=(endB-startB)/step;

varcolorArr=[];

for(vari=0;i

//计算每⼀步的hex值

varhex=ex('rgb('+parInt((sR*i+startR))+','+parInt((sG*i+startG))+','+parInt((sB*i+startB))+')');

(hex);

}

returncolorArr;

}

//将hex表⽰⽅式转换为rgb表⽰⽅式(这⾥返回rgb数组模式)

gb=function(sColor){

varreg=/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;

varsColor=rCa();

if(sColor&&(sColor)){

if(===4){

varsColorNew="#";

for(vari=1;i<4;i+=1){

sColorNew+=(i,i+1).concat((i,i+1));

}

sColor=sColorNew;

}

//处理六位的颜⾊值

varsColorChange=[];

for(vari=1;i<7;i+=2){

(parInt("0x"+(i,i+2)));

}

returnsColorChange;

}el{

returnsColor;

}

};

//将rgb表⽰⽅式转换为hex表⽰⽅式

ex=function(rgb){

var_this=rgb;

varreg=/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;

if(/^(rgb|RGB)/.test(_this)){

varaColor=_e(/(?:(|)|rgb|RGB)*/g,"").split(",");

varstrHex="#";

for(vari=0;i<;i++){

varhex=Number(aColor[i]).toString(16);

hex=hex<10?0+''+hex:hex;//保证每个rgb的值为2位

if(hex==="0"){

hex+=hex;

}

strHex+=hex;

}

if(!==7){

strHex=_this;

}

returnstrHex;

}elif((_this)){

varaNum=_e(/#/,"").split("");

if(===6){

return_this;

}elif(===3){

varnumHex="#";

for(vari=0;i<;i+=1){

numHex+=(aNum[i]+aNum[i]);

}

returnnumHex;

}

}el{

return_this;

}

}

vargradient=newgradientColor('#013548','#554851',10);

(gradient);//控制台输出

alert(gradient);

以上就是本⽂的全部内容,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,同时也希望多多⽀持!

本文发布于:2022-12-26 14:29:38,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/34225.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:gradient
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图