圖解css表示顏色的4種方式:顏色名稱、十六進位值、rgb和hsl函數

2020-12-07 青石野草

當我們在編寫css樣式規則的時候,很多情況下都是在指定顏色。比如,指定元素的背景色、字體的顏色、邊框的顏色和陰影的顏色等等。所以,我們需要一種表示方法來表示我們要使用哪一種顏色。

今天我們就來講解一下css中4種基本的表示顏色的方式,它們分別是:顏色的英文名稱十六進位顏色值rgb顏色函數hsl顏色函數

1. 顏色的英文名稱

css已經預定義好了一百多種常見顏色的英文名稱,我們可以直接使用它們。比如,red(紅色)、purple(紫色)、yellow(黃色)等等。而且這些名稱是不區分大小寫的,比如RED、rED、Red等都相當於red。

使用顏色名稱非常直觀明了,這是最簡單、最直接的顏色表示方式。但是自然界中的顏色有幾乎無窮種,因此絕大多數的顏色在css中都沒有對應的名稱。而且即使是在那些命了名的顏色中也有很多顏色的名稱是很難記住的,比如CornflowerBlue(矢車菊藍)、DarkOliveGreen(暗橄欖綠)等等。

圖1 部分顏色的英文名稱

2. 十六進位顏色值

十六進位顏色值形如#ff00cc這樣,它以井號(#)開頭且後面跟著6個十六進位的數字;它的含義建立在RGB顏色模式之下。

這些數字中的前兩位、中間兩位和後兩位分別代表紅色(Red)、綠色(Green)和藍色(Blue)三種基本色的成分值,而兩位十六進位數字正好能表示0~255的值。比如#ff00cc中,ff代表紅色成分值為255,00代表綠色的成分值為0,cc代表藍色的成分值為204。

對於大於或等於10的十六進位數字(a~f),即可以用大寫形式也可以用小寫形式,甚至大小寫混合都是可以的。比如,#FF00CC、#Ff00cC等也是正確的十六進位顏色值。不過,我們一般建議使用小寫形式。

如果十六進位顏色值中每組數字中的兩位都是相同的數字,那麼該十六進位值可以簡寫為3位的形式。比如,#ff00cc可以簡寫為#f0c。但要注意,如果任何一組數字中的兩位不同,那麼就不能簡寫。比如,#ff8c00就不能簡寫為#f8c0。

圖2展示了用十六進位表示的部分顏色,因為#ff00cc可以簡寫為#f0c,所以你可以看到第1個色塊和第3個色塊的顏色相同。但是#ff8c00就不能簡寫為#f8c0,因為即便它的第1組和第3組十六進位數中的兩個數字相同,但是中間那一組的兩個數字卻為8和c,是不相同的。如果你將某個顏色表示為#f8c0,那麼將產生css語法錯誤。

圖2 十六進位表示的部分顏色

3. rgb顏色函數

rgb顏色函數和十六進位顏色值原理是相同的,只是表示方式不一樣而已。rgb顏色函數其實包含兩個函數:rgb()和rgba()。它們的語法如下所示:

rgb(red, green, blue);

rgba(red, green, blue, alpha);

這兩個函數共同的參數red、green、blue分別代表的是RGB顏色模式中紅、綠、藍三種基本色的成分值。它們要麼全為整數形式要麼全為百分比形式,而不能是這兩種形式的混合,否則就是錯誤的css語法。當為整數時,3個參數的取值範圍都為0~255;當為百分比時,3個參數的取值範圍都為0%~100%,且即便是0%也要寫成帶百分號的形式而不能寫成0;其中100%在數值上等同於整數形式的255。

注意,當這3個參數為百分比形式的時候,一定要寫成帶百分號的形式,而不能寫成0~1之間的小數的形式。否則,這些參數會被當作是整數0或1。比如rgb(0.3, 0.3, 1.0)其實等同於rgb(0, 0, 1)而不是rgb(30%, 30%, 100%)。

rgba()函數名中最後的a代表透明(alpha通道)的意思,它的第4個參數alpha用於指定該顏色的透明程度。alpha參數的取值範圍為0~1之間的小數值,其中0為完全透明而1為完全不透明。rgb()函數因為不能指定透明度,所以它表示的顏色是完全不透明的。

圖3展示了用某些參數調用rgb顏色函數的結果,我們再次強調一下如果參數是百分比的形式,那麼就絕不能寫成是0~1之間的小數。它們所代表的含義是不相同的,這通過前兩個色塊的不同顏色就能看出來。後面3個顏色對比了對同一個顏色指定不同透明度的效果。

圖3 使用rgb顏色函數的效果

4. hsl顏色函數

hsl顏色函數建立在HSL顏色模式之下,它其實也包含兩個具體的函數:hsl()和hsla()。它們的語法如下所示:

hsl(hue, saturation, lightness);

hsla(hue, saturation, lightness, alpha);

這兩個函數共同的參數hue、saturation、lightness分別代表HSL顏色模式下的色相、飽和度、亮度三種屬性的值。其中hue必須是整數,取值範圍為0~360;saturation和lightness必須為百分比形式,取值範圍為0%~100%,且即便是0%也要寫成帶百分號的形式而不能寫成0。

注意,hsl顏色函數的第2個和第3個參數必須寫成百分比形式,而不能寫成是0~1之間的小數形式,就算是0也要寫成是0%。否則,就會導致css的語法錯誤。

其中hsla()函數中的alpha參數和rgba()函數中的alpha參數的意義是一樣的。取值範圍也是0~1之間的小數,其中0為完全透明而1為完全不透明。此外,hsl()函數表示的顏色也和rgb()函數一樣是完全不透明的。

注意,經過測試,rgba()和hsla()函數中的alpha參數既可以寫成0~1之間的小數形式也可以寫成百分比形式,這和其它參數的形式無關。我們建議alpha參數還是寫成小數形式較好,但其他人可能寫成百分比形式。

圖4展示了用某些參數調用hsl顏色函數的結果,其中後3個色塊表示的是不同透明度的同一顏色。

圖4 使用hsl顏色函數的效果

(完

相關焦點

  • CSS基礎—文字的尺寸、字體、行距及顏色
    假設當前元素的父元素的font-size設置為16px,如果當前元素的font-size設置為1.2em,則當前元素的font-size實際值為16*1.2=19.2px;如果當前元素的font-size設置為0.65em,則當前元素的font-size實際值為16*0.65=10.4px。
  • 16進位顏色表示與RGB色彩模型——零基礎自學網頁製作
    這就是10進位!16進位的規律和10進位大同小異。不同的是,16進位到16才進1.假如我們有一個神奇的計數器,它的個位和下一個進位的數字顯示在()()兩個括號中。比如我們表示1的話就是(00)(01).2至15到16就是(00)(02)......(00)(15),(01)(00)那17怎麼表示?
  • 記一次HEX和RGB互換算法的思考及應用
    比如從HEX值轉化到RGB值, 亦或者是從RGB值轉換到HEX值, 這塊在PhotoShop等設計軟體中非常常見, 在做類似於畫板, 設計類的IDE的時候也經常會用到它們的互相轉換, 還有一種場景是,為了滿足老闆對高大上特效的要求, 我們要讓動畫在不同的時間顯示不同的顏色,而且有過渡效果(過渡效果雖然可以通過transiton來實現),如下:所以筆者在這裡就分享一下HEX與RGB之間相互轉換的原理和算法
  • 小猿圈python學習-秒懂十六進位
    定義16進位,英文名稱Hexadecimal(簡寫Hex), 在數學中是一種逢16進1的進位制。一般用數字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15,這些稱作十六進位數字,比如十進位13用16進位表示是D, 28用16進位是1C。
  • 圖像處理基礎:顏色空間及其OpenCV實現
    顏色是一種連續的現象,它意味著有無數種顏色。但是,人類的眼睛和感知能力是有限的。所以,為了識別這些顏色,我們需要一種媒介或這些顏色的表示,這種顏色的表示被稱為色彩空間。在技術術語中,一個顏色模型或顏色空間是一個特定的3-D坐標系統以及該系統中的一個子空間,其中每一種顏色都由一個單點表示。有哪些顏色空間的類型?目前主要有五種類型的顏色模型。
  • 介紹「十六進位數字符串至數值轉換」函數
    有幾點需要注意:本文引用地址:http://www.eepw.com.cn/article/201701/337016.htm1:雖然該函數的輸入端子「string」的值可以是十六進位數、字符串(ASCII)或其他進位數,但是「string」的值流入該函數中時,先轉換成字符串(ASCII)。
  • 谷歌搜索現已支持RGB/16進位色轉換
    (原標題:谷歌搜索現已支持RGB/16進位色轉換)
  • 二進位、十進位和十六進位
    二進位就是逢二進位,它的一個位只有兩個值:0 和 1,但它卻是實現計算機系統的最基本的理論基礎,計算機(包括單片機)晶片是基於成萬上億個的開關管組合而成的,他們每一個都只能有開和關兩種狀態,再難找出第三個狀態了(不要辯解半開半關這個狀態,它是不穩定態,是極力避免的),所以他們只能對應於二進位的 1 和 0 兩個值,而沒有 2、3、4......,理解二進位對於理解計算機的本質很有幫助。
  • 二進位、十進位、八進位、十六進位間的相互轉換函數
    二進位、十進位、八進位、十六進位間的相互轉換函數1、輸入任意一個十進位的整數,將其分別轉換為二進位、八進位、十六進位。{int num;char a[39];//定義一個字符數組,用於存儲字符串cout<<"Entre num:"<<endl;cin>>num;cout<<"二進位
  • 二進位,八進位,十進位,十六進位之間的轉換
    1234[10進位] 0 1 2 3 4 5 6 7 8 9 0 當數位上的值超過9就要進11000+200+30+4=1*103+2*102+3*101+4*100=12341011[2進位] 0 1 當數位上的值超過1就要進11*23+0*22+1*21+1*20=8
  • 二進位、八進位、十進位和十六進位數之間的轉換方法
    常見的數制有二進位、八進位、十進位和十六進位。文字、數字、聲音、圖形與圖像、視頻以及動畫等數據在計算機中是以二進位的形式存儲的。一般情況下,我們在數字後面用特定的字母(下標)表示該數的進位,表示方法為:B表示二進位,D表示十進位(D可省略),O表示八進位,H表示十六進位。如二進位數10101表示為(10101)B。
  • 數據的表示二進位八進位十進位十六進位之間的轉換
    數據的表示1.R進位轉十進位R進位轉十進位使用按權展開法二進位 10100.01 = 1x24+1x22+1x2-2七進位 604.01 = 6x72+4x70+1x7-2十進位 1227 = 1x103+2x102+2x101+7x1002.十進位轉
  • 有趣的進位-十六進位
    為了讓人不懵逼,聰明的人類選擇用十六進位來表示二進位,十六進位作為二進位的簡寫方式,目的就是方便人類去觀看。那麼問題就出現了,為什麼用十六進位來表達呢?為什麼不用三進位、五進位、七進位就表達呢?又是怎樣的表達方式呢?
  • 二進位、八進位和十六進位之間轉換
    除了二進位和八進位,十六進位也經常使用,甚至比八進位還要頻繁。十六進位中,用A來表示10,B表示11,C表示12,D表示13,E表示14,F表示15,因此有 0~F 共16個數字,基數為16,加法運算時逢16進1,減法運算時借1當16。例如,數字 0、1、6、9、A、D、F、419、EA32、80A3、BC00 都是有效的十六進位。
  • 十進位與十六位進位轉換
    介紹兩個技巧,一個是PPT吸顏色的技巧,另一個是網頁處理顏色的技巧。 我比較喜歡用這兩種顏色。 問題是,如果是網站匹配的顏色,如何快速對應RGB值。 比如公眾號我也要用這些顏色。網站html顏色是採用16位制的,RGB是10進位。
  • 二進位、八進位、十進位與十六進位
    一、 進位的概念在計算機語言中常用的進位有二進位、八進位、十進位和十六進位,十進位是最主要的表達形式。對於進位,有兩個基本的概念:基數和運算規則。A 8)16訣竅:因為每四位二進位數對應一位十六進位數,所以,以小數點為界,整數位則將二進位數從右向左每4位一隔開,不足4位的在左邊用0填補即可;小數位則將二進位數從左向右每4位一隔開,不足4位的在右邊用0填補即可。
  • 進位詳解:二進位、八進位和十六進位
    例如,數字 0、1、10、111、100、1000001 都是有效的二進位。在計算機內部,數據都是以二進位的形式存儲的,二進位是學習編程必須掌握的基礎。本節我們先講解二進位的概念,下節講解數據在內存中的存儲,讓大家學以致用。二進位加減法和十進位加減法的思想是類似的:下面兩張示意圖詳細演示了二進位加減法的運算過程。
  • 跟我學java編程—不得不說的二進位和十六進位
    計算機能夠識別的數制是二進位數,二進位數是用0和1兩個數字來表示的數,計算機的指令集也是採用二進位表示,機器語言就是用二進位數編寫程序。可以藉助十進位數來理解二進位數。在十進位中,每一位有0、1、2、3、4、5、6、7、8、9十個數碼,因此基數為10,超過9就必須用多位數來表示,並遵循逢十進一的原則。