毎日の開発では、さまざまな形式のカラードメイン値間の相互変換がよく使用されます。これが解決策です。
コードコピーは次のとおりです。
// 16進数の正規表現
var reg = /^#([0-9a-fa-f] {3} | [0-9a-fa-f] {6})$ /;
/*rgb hexadecimalへの色変換*/
string.prototype.colorhex = function(){
var that = this;
if(/^(rgb | rgb)/。test(that)){
var acolor = that.replace(/(?:/(|/)| rgb | rgb)*/g、 "")。split( "、");
var strhex = "#";
for(var i = 0; i <acolor.length; i ++){
var hex = number(acolor).tostring(16);
if(hex === "0"){
hex += hex;
}
strhex += hex;
}
if(strhex.length!== 7){
strhex = that;
}
strhexを返します。
} else if(reg.test(that)){
var anum = that.replace(/#/、 "")。split( "");
if(anum.length === 6){
それを返します。
} else if(anum.length === 3){
var numhex = "#";
for(var i = 0; i <anum.length; i+= 1){
numhex +=(anum +anum);
}
numhexを返します。
}
}それ以外{
それを返します。
}};
/*166個の色をRGB形式に変換*/
string.prototype.colorrgb = function(){
var scolor = this.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;
}
// 6桁の色の値を処理します
var scolorchange = [];
for(var i = 1; i <7; i+= 2){
scolorchange.push(parseint( "0x"+scolor.slice(i、i+2)));
}
return "rgb(" + scolorchange.join( "、") + ")";
}それ以外{
スコラーを返す;
}};
色変換方法を使用します:
コードコピーは次のとおりです。
ar srgb = "rgb(23、245、56)"、shex = "#34538b";
var shexcolor = srgb.colorhex();
var srgbcolor = shex.colorrgb();