RGBA
RGBA的意思是(Red-Green-Blue-Alpha)它是在RGB上擴展包括了“alpha”通道,運行對顏色值設置透明度。
div {
background:rgba(255,0,0,0.5);
}
在RGBA中,四個數字以逗號分隔開,前面三個數字標識這個顏色的RGB值,這個設置和RGB並沒有任何區別,RGBA也可以設置為百分比,后面的數字代表透明度,范圍在0-1之間。1表示不透明,在這里就相當於rgb(255,0,0),0表示全透明。
通常我們為了省略一個0:
div {
background:rgba(255,0,0,.5);
}
RGBA是CSS3引入的一個顏色的值。在CSS3中,我們可以用以下六種格式表示顏色,:
background:#f00;
background:red;
background:rgb(255,0,0);或者 rgb(100%,0%,0%);
background:rgba(255,0,0,1);
background:hsl(0,100%,50%);
background:hsla(0,100%,50%,1);
以上標識的都是紅色。
Can I use RGBA?
最新版的瀏覽器都是支持RGBA的,IE8以下是不支持的,對於顏色有透明度的,可以使用RGBA,選擇對IE8優雅降級,使用RGB不支持透明度等。但是也有一些方法能夠使RGBA在IE跨瀏覽器支持:
使用支持透明度通道的圖片PNG。
還有一種辦法就是使用IE filter:
比如我想要一個50%透明度紅色的背景:
background:transparent;
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7FFF0000,endColorstr=#7FFF0000);
zoom: 1;
這個就是利用IE filter填充了背景,我們使用透明度設置的是7F,也就是FF的一半代表透明。如果要設置10%透明度,就要把startColorstr=#19FF0000,endColorstr=#19FF0000.后面的六位代表顏色,前面的代表的是明度,而且是16進制的,按照透明度百分比計算出FF的的百分比。因為這里我們用的是ARGB,具體這里的計算我也沒太懂。
對比:10%透明度
在要求完美兼容的時候,我們可以使用IE filter 或者png圖片。但是一般不影響使用情況下,對IE8一下瀏覽采取降級,也是最明智的措施,獲得最新版的瀏覽器,可以讓用戶在過程中,這也是為未來着想。因為這種手段來迫使用戶獲得更好的用戶體驗,而且我們發現IE filter渲染的顏色並不標准。
總結:
RGBA在CSS3種是一個非常重要的顏色值,因為它支持alpha通道。增強了CSS對色彩的處理,我們回顧了RGBA的格式,RGBA前面的三個數字的格式和RGB並沒有差別,最好一個數字的范圍是0-1,代表透明度。有時我們省略0,只寫小數點和后面的數字。CSS中新增了一些顏色的表達方式,比如HSL等。為了讓RGBA做到跨瀏覽器支持我們要采取IE filter 或者PNG圖片 filter渲染並不是標准的,顏色值也是有偏差。我們在計算透明度的時候,在IE Filter中 要采用16進制的計算方式,50%的透明度是7F,也就是255的一半,127.在當前情況下,推薦使用RGBA,在不影響功能的前提下,可以對IE8以下瀏覽器不使用完美兼容的方案,對於影響功能時,可以使用 IE filter 和png.
最后我們提供一個計算IE filter 的網站,可以轉換RGBA 和 IE filter。http://kilianvalkhof.com/2010/css-xhtml/how-to-use-rgba-in-ie/ 。我在轉換IE filter是,都是先用255乘以透明度,然后在四舍五入,然后轉換成16進制的。