看完 w3cschool《css 教程》中的《css 圖像透明/不透明》,你對 CSS 中的半透明顏色可能已經(jīng)有了基礎的了解,CSS 透明算得上是一種相當流行的技術,但在跨瀏覽器支持上,對于開發(fā)者來說,可以說是一件令人頭疼的事情。目前還沒有一個通用方法,以確保透明度設置可以在目前使用的所有瀏覽器上有效,但是總得來說它是一個巨大的變革。關于 CSS 透明度,有一點需要注意的是,它雖然使用了很多年,但它一直以來都不是一個標準屬性,它是一種非標準技術,應該是 CSS3 規(guī)范的一部分。

怎樣在CSS樣式中設置背景的透明度
怎樣在 CSS 樣式中設置背景的透明度,下面給出一個具體的實例。把類為 box 的層設為透明。
實例
.box{
width:300px;
height:200px;
margin:0 auto;
boxder:1px solid #ccc;
background:#000;
filter:alpha(opacity:30);
opacity:0.3;
color:red;}
嘗試一下 ?
其中 background:#000; filter:alpha(opacity:30); opacity:0.3;為關鍵代碼,當 opacity 值為1時,表示完全不透明,為0時表示完全透明。
其他的屬性介紹如下:
opacity: 0.3;這是“最重要的”,因為它是在 CSS 的現(xiàn)行標準。這將在 Firefox,Safari 和 Opera 的大多數(shù)版本的工作。這將是你所需要的一切如果所有的瀏覽器都支持目前的標準。當然是他們不會錯。
filter:alpha(opacity=30);這一個是針對IE瀏覽器
-moz-opacity:0.3;你需要這一個支持老版本的 Mozilla 瀏覽器如 Netscape Navigator。
-khtml-opacity: 0.3;這是舊版本的 Safari(1.×)當渲染引擎是使用仍被稱為 kthml,而不是目前的WebKit。
CSS 中用 javascript 或 jquery 實現(xiàn)透明度的改變
如何用 CSS 實現(xiàn)背景半透明效果?我們一般的做法是用兩個層,一個用于放文字,另一個用于做透明背景,因為透明濾鏡的效果會影響到里面的內容。
不過如果你只需求在 IE 下實現(xiàn),使用 CSS 實現(xiàn)透明度有很多方案,這里只是介紹大家通用的方法:
.transparent_class {
filter:alpha(opacity=50);//標準的css透明度,在大部分的標準瀏覽器Firefox, Safari, and Opera都有效
opacity:0.5;//兼容IE解決方案
-moz-opacity:0.5;//老的Mozilla browsers如NetscapeNavigator.幾乎沒有可以不需要
-khtml-opacity:0.5;//兼容老的Safari (1.x) 版本,很少可以不用 }
知道了CSS改變透明度的原理,那么使用 javascript 動態(tài)改變透明度就簡單了:
實例
<script>
window.onload =function(){
var myDiv = document.getElementById("transparent_div");
myDiv.onclick =function(){
myDiv.style.opacity =".4";//針對所有通用瀏覽器
myDiv.style.filter ="alpha(opacity=40)";//針對IE瀏覽器}}
</script>
嘗試一下 ?
jQuery改變透明度實現(xiàn)如下:
實例
$(document).ready(function(){
$("#btn1").click(function(){
$("#box").animate({opacity:"0"});});
$("#btn2").click(function(){
$("#box").animate({opacity:"1"});});});
嘗試一下 ?
CSS透明技巧匯總
一、舊的Opacity設置
以下代碼是 Firefox 和 Safari 舊版本所需的透明度設置:
#myElement { -khtml-opacity: .5; -moz-opacity: 0.5; }
-khtml-opacity 設置是針對舊版本的Webkit渲染引擎,這種專用屬性現(xiàn)在已經(jīng)過時了,除非你還有需要兼容Safari 1.x.的用戶。
第二行使用專用屬性 -moz-opacity是 為了兼容 Mozilla 渲染引擎的早期版本,以及追溯到 Netscape Navigator。 Firefox 0.9 以后就不要求使用 -moz-opacity 屬性,F(xiàn)irefox 3.5(現(xiàn)在使用 Gecko 引擎)已經(jīng)不在支持這個屬性。
二、在Firefox, Safari, Chrome和Opera下的CSS透明度
以下代碼是除了IE外的所有當前瀏覽器的最簡單,最新的不透明度設置的CSS語法:
#myElement { opacity: 0.7; }
上述語法將設置一個元素為70%不透明(或30%透明)。設置opacity:1將使元素不透明,而設置opacity:0將使得元素完全不可見。你 只要記住“opacity”等同于“不透明”就很容易記住了,opacity值越小就越接近透明。
opacity屬性可以精確地小數(shù)點后兩位,所以值取".01"和".02"實際上是不同的,雖然可見度很難被發(fā)覺。一般情況下,精確到一位就可以了,取值如".3"或".7"。
三、IE下的CSS透明度
IE下照舊有別于其他瀏覽器,并且目前也有三個不同版本的IE在廣泛使用,透明度設置是不同的,有時需要額外的CSS來控制:
#myElement { filter: alpha(opacity=40); }
上面的CSS使用專用的filter屬性來設置IE6-8透明度。對于IE6和IE7需要注意:為了使得透明設置生效,元素必須是“有布局”。一個元素 可以通過使用一些CSS屬性來使其被布局,有如width和position。
另外一個設置IE8的CSS透明度的方法語法如下:
#myElement { filter: progid:DXImageTransform.Microsoft.Alpha(opacity=40);
/* 第一行在IE6, IE7和IE8下有效 */
-ms-filter: “progid:DXImageTransform.Microsoft.Alpha(opacity=40)”;
/*第二行僅在IE8下有效 */}
第一行代碼針對當前所有IE版本,第二行僅針對 IE8。
注意兩行代碼的不同之處:在第二行代碼中,在filter屬性前跟著-ms-前綴,并且屬性值有加引號,這些都是語法所必須的。
說實在,有了之前一個例子中用 alpha(opacity=40)的語法來作用于任何版本的 IE 下的任何有布局的元素之后,并不能確定是否還有必要用”progid“的方法
CSS 如何值改變背景透明的,不改變子元素透明度?
一般情況下,我們可以使用 css 的 opcity 屬性改變某個元素的透明度,但是其元素下的子元素的透明度也會被改變,即使對子元素重新定義也沒有用,例如:
實例
<div style="opacity:0.4; background-image:url(/statics/images/w3c/intro.png)">
嘗試一下 ?
文字元素的透明度也會是 0.4。于是想一想,如果有方法只改變背景的透明度就能解決此問題了。
方法1:使用一張透明的圖片做背景可以達成效果,但是有沒有更簡單的方法呢?
方法2:使用 RGBA。
例如:
實例
<div style="background-color:rgba(0, 0, 0, 0.4)">
嘗試一下 ?
CSS在設置了透明度的層里,怎么讓里面的層不透明
在外層DIV設置了CSS代碼如下
實例
opacity: 0.8;
-moz-opacity: 0.8;
filter: alpha(opacity=80);
嘗試一下 ?
但在此層里面的層都透明了,怎么讓里面的層不透明?
方法:
如果是顏色,完全可以用背景色透明 rgba 來代替 opacity,
如果是圖片,就用 ps 簡單處理一下即可。
opacity 這個屬性指定的透明是包括里面的元素的,不可能只有外面透明,里面不透明
css里邊寫透明樣式怎么寫
如果是用樣式的話需要用到濾鏡
style="filter:Alpha(Opacity=opacity, FinishOpacity=finishopacity,Style=style, StartX=startX,StartY=startY,F(xiàn)inishX=finishX,F(xiàn)inishY=finishY)"
說明:
Opacity:起始值,取值為0~100, 0為透明,100為原圖。
FinishOpacity:目標值。
Style:1或2或3
StartX:任意值
StartY:任意值
語法如下:
filter:Alpha(Opacity="0",FinishOpacity="75",Style="2")
但是因為濾鏡的兼容性問題,最好是不要用,可以用 ps 做圖的時候,把背景調一下透明度后導成 png 格式的圖片就行了,如果透明的背景顏色一樣的話,那么你可以切成 1px*1px 大小的 png 圖片平鋪,gif 只支持透明度 100% 也就是完全透明的圖片,半透明的不支持,而 png 格式的圖片則不存在什么問題,唯一會有問題的地方就只是 IE6 不兼容透明 png 格式而已。
更多建議: