1. 程式人生 > >CSS實現透明效果顏色的方法:RGBa

CSS實現透明效果顏色的方法:RGBa

RGBa是一種在CSS中宣告包含透明效果的顏色的方法,它的語法是這樣的:

1
2
3
div {
   background: rgba(200, 54, 54, 0.5);
}

它允許我們為元素新增透明色。或許我們習慣了使用”opacity“,它很簡單易用,但是,opacity會使所有的子元素都變成透明的,而且很難去解決這個問題。(除非使用怪異的定位hack) 跨瀏覽器透明同樣頗為棘手。

通過RGBa,我們可以將一個元素設定為透明,而不會影響其子元素:

宣告一個保留顏色

並非所有的瀏覽器支援RGBa,所以如果允許的話,可以宣告一個保留色彩。這個色彩應該是可靠的——所有的瀏覽器都支援。不宣告就意味著,在不支援RGBa的瀏覽器裡面,沒有使用顏色。

1
2
3
4
div {
   background: rgb(200, 54, 54); /* The Fallback */
   background: rgba(200, 54, 54, 0.5);
}</code>

不過,這條退路在某些古董級瀏覽器中依然無效。

RGBa的瀏覽器支援情況

瀏覽器,版本,作業系統 測試結果 退路
Firefox 3.0.5 (OS X, Windows XP, Vista) 支援
Firefox 2.0.0.18 (PC) 不支援 純色
Safari 4 (Developer Preview, Mac) 支援
Safari 3.2.1 (PC) 支援
Mobile Safari (iPhone) 支援
Opera 9.6.1 不支援 純色
IE 5.5 (PC via IETester) 不支援 無色
IE 6 (PC via IETester) 不支援 純色
IE 7 不支援 純色
IE 8 beta 2 不支援 純色
Google Chrome 1.0.154.43 支援
Google Chrome 1.0.154.46 支援
Netscape 4.8 (PC) 不支援 沒有顏色
SeaMonkey 1.1.14 不支援 無色
SeaMonkey 1.1.16 不支援 純色
SeaMonkey 2.0 beta3 支援
Sunrise 1.7.5 支援
Stainless 0.2.5 支援
Flock 2.0.2 支援
BlackBerry Storm Browser 支援 純色
Camino 1.6.6 不支援 純色

上面的資料是通過測試demo得到的,該測試頁面包含了更多更完整的瀏覽器相容性列表。

對IE瀏覽器的更好的退路

因為IE瀏覽器支援條件註釋,我們可以拋棄RGB並使用IE的一個私有CSS濾鏡來實現同樣的效果:

1
2
3
4
5
6
7
8
9
<!--[if IE]>
   <style type="text/css">
   .color-block {
       background:transparent;
       filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000050,endColorstr=#99000050);
       zoom: 1;
    } 
    </style>
<![endif]-->