CSS顏色模式轉換器的實現

2021-09-08 22:30:07 字數 2781 閱讀 8147

16進製制 -> rgb

16進製制是設定顏色值的常用方式,將三個介於00-ff的十六進製制數連線起來,若16進製制的3組數各自成對,則可簡寫為3位。

16進製制與rgb模式的對應關係為:16進製制的前兩位對應rgb的red部分;16進製制的中間兩位對應rgb的green部分;16進製制的後兩位對應rgb的blue部分。而16進製制使用的16進製制的數字格式,而rgb使用的10進製的數字格式。所以還需要數字進製的變換

function

sixteentorgb(str)

else

if(str.length == 4)

else

rgb = 'rgb(' + r +',' + g +','+b +')';

return

rgb;

}console.log(sixteentorgb('#123456'));//

rgb(18,52,86)

console.log(sixteentorgb('#123'));//

rgb(17,34,51)

console.log(sixteentorgb('#1234'));//

false

rgb -> 16進製制

通過組合不同的紅色、綠色、藍色分量創造出的顏色成為rgb模式的顏色。顯示器是由乙個個畫素構成,利用電子束來表現色彩。畫素把光的三原色:紅色(r)、綠色(g)、藍色(b)組合起來。每畫素包含8位元色彩的資訊量,有0-255的256個單元,其中0是完全無光狀態,255是最亮狀態

在rgb模式轉換為16進製制模式要注意的是,轉換的成r、g、b三個分量的16進製制值如果是一位數,則需要在前一位補0

function

rgbtosixteen(str)

else

}else

}function

addzero(str)

else

}console.log(rgbtosixteen('rgb(10,44,3)'));//

#0a2c03

console.log(rgbtosixteen('rgb(-10,44,3)'));//

false

console.log(rgbtosixteen('rgb(123)'));//

false

hsl -> rgb

hsl模式是通過對色調(h)、飽和度(s)、亮度(l)三個顏色通道的變化以及它們相互的疊加得到各式各樣的顏色。hsl標準幾乎可以包括人類視力所能感知的所有顏色

h:色調(hue)可以為任意整數。0(或360或-360)表示紅色,60表示黃色,120表示綠色,180表示青色,240表示藍色,300表示洋紅(當h值大於360時,實際的值等於該值模360後的值)

s:飽和度(saturation),就是指顏色的深淺度和鮮豔程度。取0-100%範圍的值,其中0表示灰度(沒有該顏色),100%表示飽和度最高(顏色最鮮豔)

l:亮度(lightness),取0-100%範圍的值,其中0表示最暗(黑色),100%表示最亮(白色)

//

參考function

hsltorgb(str)

else

var q = l < 0.5 ? l * (1 + s) : l + s - l *s;

var p = 2 * l -q;

r = hue2rgb(p, q, h + 1/3);

g =hue2rgb(p, q, h);

b = hue2rgb(p, q, h - 1/3);

}

return 'rgb(' + math.round(r * 255) + ','+ math.round(g * 255)+ ',' + math.round(b * 255) + ')';

}else

}else

}console.log(hsltorgb('hsl(248,64%,39%)'));//

rgb(53,36,163)

console.log(hsltorgb('hsl(-248,64%,39%)'));//

false

console.log(hsltorgb('hsl(300,40%,50%)'));//

rgb(179,77,178)

rgb -> hsl

//

參考function

rgbtohsl(str)else

h /= 6;

}

return 'hsl(' + math.round(h*360) + ',' + math.round(s*100) + '%,' + math.round(l*100) + '%)';

}else

}else

}console.log(rgbtohsl('rgb(53,36,163)'));//

hsl(248,64%,39%)

console.log(rgbtohsl('rgb(179,77,178)'));//

hsl(301,40%,50%)

console.log(rgbtohsl('rgb(300,1,1)'));//

false

簡易拾色器

16進製制顏色轉換器

rgb顏色轉換器

hsl顏色轉換器

轉換器模式

轉換器模式是一種行為模式,它的主要目的是把相同結構的物件進行轉換。在日常開發的時候,需要在物件之間進行值的 copy,如 pojo,dto,vo物件之間有相同的屬性,想把乙個物件的值 copy 到另乙個物件中去,從資料庫中查詢出 pojo 物件的資料,有個物件是對 pojo 進行包裝dto,現在想把...

unity3d 顏色轉換器

雖然unity支援.net2.0 sub 框架,但是對於有一些dll。還是不支援的!比如 system.drawing.dll就是乙個了。在這個元件中,ms是支援不同進製的顏色轉換的。color color colortranslator.fromhtml 000000 原因 system.draw...

flask轉換器的使用和自定義轉換器

在我之前寫關於flask路由設定的時候使用過轉換器,簡單來說就是約束前端路由傳遞引數的型別。def index user id print user id return hello flask flask自帶一些常用的轉換器,有五種 但是有時候,我們有特殊型別的引數需要傳遞,這時就需要自定義轉換器。...