国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript實(shí)現(xiàn)顏色漸變的方法

2019-11-20 21:48:57
字體:
供稿:網(wǎng)友

漸變(Gradient)是美學(xué)中一條重要的形式美法則,與其相對(duì)應(yīng)的是突變。形狀、大小、位置、方向、色彩等視覺因素都可以進(jìn)行漸變。在色彩中,色相、明度、純度也都可以產(chǎn)生漸變效果,并會(huì)表現(xiàn)出具有豐富層次的美感。本文主要講述兩種顏色RGB數(shù)值的漸變算法。

已知:A=50,B=200,A、B之間平均分成3份(Step=3),求每份的數(shù)值(StepN)分別是多少。

公式:Gradient = A + (B-A) / Step * N

注]編程時(shí)為了提高效率避免浮點(diǎn)運(yùn)算,往往把除法放在最后面,這樣公式就成了:Gradient = A + (B-A) * N / Step

Step=3時(shí),根據(jù)公式可以求出Step1=A+(A-B)/3*1=50+(200-50)/3=100,Step2=A+(A-B)/3*2=50+(200-50)/3*2=150。這就是均勻漸變的算法原理了,很簡單,小學(xué)知識(shí)。

兩種顏色的漸變就是對(duì)兩種顏色的RGB通道分別進(jìn)行這樣的計(jì)算,例如兩種顏色分別是RGB(200,50,0)和RGB(50,200,0),用上述公式進(jìn)行計(jì)算就是:

RStep1=RA=RA+(BA-RA)/Step*N=200+(50-200)/3*1=200-50=150

GStep1=GA=GA+(GA-GA)/Step*N=50+(200-50)/3*1=50+50=100

BStep1=BA=BA+(BA-BA)/Step*N=0

因此RGBStep1=(150,100,0),同樣的方法可以求出RGBStep2=(100,150,0)。

網(wǎng)頁中的漸變文字特效就是這么做出來的。例如你的網(wǎng)頁HTML中有這么一句代碼:<span id=myText>你就是我天空里最美麗的彩虹</span>,在后面加入如下的代碼就可以實(shí)現(xiàn)漸變文字。(生成漸變的兩種顏色:#c597ff和#73e7a9)

復(fù)制代碼 代碼如下:

var ColorA = "#c597ff";
var ColorB = "#73e7a9";

// 顏色#FF00FF格式轉(zhuǎn)為Array(255,0,255)
function color2rgb(color)
{
 var r = parseInt(color.substr(1, 2), 16);
 var g = parseInt(color.substr(3, 2), 16);
 var b = parseInt(color.substr(5, 2), 16);
 return new Array(r, g, b);
}

// 顏色Array(255,0,255)格式轉(zhuǎn)為#FF00FF
function rgb2color(rgb)
{
 var s = "#";
 for (var i = 0; i < 3; i++)
 {
  var c = Math.round(rgb[i]).toString(16);
  if (c.length == 1)
   c = '0' + c;
  s += c;
 }
 return s.toUpperCase();
}

// 生成漸變
function gradient()
{
 var str = myText.innerText;
 var result = "";
 var Step = str.length - 1;

 var Gradient = new Array(3);
 var A = color2rgb(ColorA);
 var B = color2rgb(ColorB);

 for (var N = 0; N <= Step; N++)
 {
  for (var c = 0; c < 3; c++) // RGB通道分別進(jìn)行計(jì)算
  {
   Gradient[c] = A[c] + (B[c]-A[c]) / Step * N;
  }
  result += "<font color=" + rgb2color(Gradient) +
   ">" + str.charAt(N) + "</font>";
 }
 myText.innerHTML = result;
}

gradient(); // 運(yùn)行程序

A、B、C三種顏色或多種顏色的漸變,理論上講只要先把A、B進(jìn)行漸變,再把B、C進(jìn)行漸變,依此類推就行了。實(shí)踐過程中,為了使?jié)u變的每個(gè)像素顏色分布均勻,產(chǎn)生了多種插值算法,具體算法以后再討論吧。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 长寿区| 定陶县| 陆良县| 威海市| 安多县| 乌拉特中旗| 农安县| 禹城市| 杨浦区| 济南市| 抚顺市| 嵊州市| 泸西县| 台中市| 丰镇市| 黄浦区| 阿城市| 秦皇岛市| 依兰县| 武安市| 琼结县| 龙泉市| 卢龙县| 潜山县| 乐昌市| 阿拉善右旗| 宣化县| 青田县| 望江县| 桐庐县| 济宁市| 乌海市| 阿合奇县| 桃园县| 潢川县| 孟津县| 太原市| 新和县| 阳新县| 丽江市| 宁波市|