日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS 处理十六进制颜色渐变算法-输入颜色,输出渐变rgb数组

發(fā)布時(shí)間:2024/4/14 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS 处理十六进制颜色渐变算法-输入颜色,输出渐变rgb数组 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

html顏色有幾種表示方式:

英文單詞顏色值:background-color:Blue;
十六進(jìn)制顏色值:background-color:#FFFFFF;?
RGB顏色值三元數(shù)字:background-color:rgb(255,255,255)
RGB顏色值三元百分比:background-color:rgb(100%,100%,100%)

本文講述輸入兩個(gè)十六進(jìn)制顏色,輸出rgb漸變數(shù)組的算法。

?html部分:

<body><form id="form1" runat="server"><div id ="test_color"></div></form> </body>

JavaScript部分:

漸變色處理函數(shù)思路:

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

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

實(shí)現(xiàn)方法非常簡單,只是需要將顏色從rgb到hex的互轉(zhuǎn)。

?? 輸入:

?????startColor:? 十六進(jìn)制開始顏色

???? endColor:? 十六進(jìn)制結(jié)束顏色

???? step: 漸變分的步數(shù)

?? 輸出:漸變顏色rgb數(shù)組

function gradientColor(startColor, endColor, step) {startRGB = this.colorRgb(startColor);//轉(zhuǎn)換為rgb數(shù)組模式startR = startRGB[0];startG = startRGB[1];startB = startRGB[2];endRGB = this.colorRgb(endColor);endR = endRGB[0];endG = endRGB[1];endB = endRGB[2];sR = (endR - startR) / step;//總差值sG = (endG - startG) / step;sB = (endB - startB) / step;var colorArr = [];for (var i = 0; i < step; i++) {//計(jì)算每一步的hex值 var hex = this.colorHex('rgb('+ parseInt((sR * i + startR))+ ',' + parseInt((sG * i + startG))+ ',' + parseInt((sB * i + startB)) + ')');colorArr.push(hex);}return colorArr;}

漸變色函數(shù)屬性:

// 將hex表示方式轉(zhuǎn)換為rgb表示方式(這里返回rgb數(shù)組模式)gradientColor.prototype.colorRgb = function (sColor) {var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;var sColor = sColor.toLowerCase();if (sColor && reg.test(sColor)) {if (sColor.length === 4) {var sColorNew = "#";for (var i = 1; i < 4; i += 1) {sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));}sColor = sColorNew;}//處理六位的顏色值var sColorChange = [];for (var i = 1; i < 7; i += 2) {sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2)));}return sColorChange;} else {return sColor;}};// 將rgb表示方式轉(zhuǎn)換為hex表示方式gradientColor.prototype.colorHex = function (rgb) {var _this = rgb;var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;if (/^(rgb|RGB)/.test(_this)) {var aColor = _this.replace(/(?:(|)|rgb|RGB)*/g, "").split(",");var strHex = "#";for (var i = 0; i < aColor.length; i++) {var hex = Number(aColor[i]).toString(16);hex = hex < 10 ? 0 + '' + hex : hex;// 保證每個(gè)rgb的值為2位if (hex === "0") {hex += hex;}strHex += hex;}if (strHex.length !== 7) {strHex = _this;}return strHex;} else if (reg.test(_this)) {var aNum = _this.replace(/#/, "").split("");if (aNum.length === 6) {return _this;} else if (aNum.length === 3) {var numHex = "#";for (var i = 0; i < aNum.length; i += 1) {numHex += (aNum[i] + aNum[i]);}return numHex;}} else {return _this;}} View Code


頁面加載腳本,生成div,輸入開始顏色,結(jié)束顏色,生成漸變色數(shù)組,賦值為背景色,

window.onload = function(){var gradient = new gradientColor('#FF0000', '#00FF00', 101);console.log(gradient);//alert(gradient);for(var i= 0,j= 0;i<=100;i++){var div = document.createElement("div");div.style.position = "absolute";div.style.width = "50px";div.style.height = "50px";div.style.left = ((i%10)*50+10)+"px";div.style.border = "1px solid #ddd";div.style.backgroundColor = gradient[i];div.innerText = i;if(i%10==0){++j;}div.style.top = ((j-1)*50+10)+"px";document.body.appendChild(div);}}

生成的結(jié)果如下圖:

從紅色漸變?yōu)榫G色:

?

參考: http://yanue.net/post-80.html

?版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請注明出處。http://www.cnblogs.com/SweetMemory/p/6274388.html

轉(zhuǎn)載于:https://www.cnblogs.com/SweetMemory/p/6274388.html

總結(jié)

以上是生活随笔為你收集整理的JS 处理十六进制颜色渐变算法-输入颜色,输出渐变rgb数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。