CSS 透明度設置方法及常見問題解析

2020-11-12 18:04 更新

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


css透明度

怎樣在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 的現行標準。這將在 Firefox,Safari 和 Opera 的大多數版本的工作。這將是你所需要的一切如果所有的瀏覽器都支持目前的標準。當然是他們不會錯。

filter:alpha(opacity=30);這一個是針對IE瀏覽器

-moz-opacity:0.3;你需要這一個支持老版本的 Mozilla 瀏覽器如 Netscape Navigator。

-khtml-opacity: 0.3;這是舊版本的 Safari(1.×)當渲染引擎是使用仍被稱為 kthml,而不是目前的WebKit。

CSS 中用 javascript 或 jquery 實現透明度的改變

如何用 CSS 實現背景半透明效果?我們一般的做法是用兩個層,一個用于放文字,另一個用于做透明背景,因為透明濾鏡的效果會影響到里面的內容。


不過如果你只需求在 IE 下實現,使用 CSS 實現透明度有很多方案,這里只是介紹大家通用的方法:

.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改變透明度實現如下:

實例

$(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渲染引擎,這種專用屬性現在已經過時了,除非你還有需要兼容Safari 1.x.的用戶。

第二行使用專用屬性 -moz-opacity是 為了兼容 Mozilla 渲染引擎的早期版本,以及追溯到 Netscape Navigator。 Firefox 0.9 以后就不要求使用 -moz-opacity 屬性,Firefox 3.5(現在使用 Gecko 引擎)已經不在支持這個屬性。

透明樣例


二、在Firefox, Safari, Chrome和Opera下的CSS透明度 

以下代碼是除了IE外的所有當前瀏覽器的最簡單,最新的不透明度設置的CSS語法:

#myElement { opacity: 0.7; }

上述語法將設置一個元素為70%不透明(或30%透明)。設置opacity:1將使元素不透明,而設置opacity:0將使得元素完全不可見。你 只要記住“opacity”等同于“不透明”就很容易記住了,opacity值越小就越接近透明。
opacity屬性可以精確地小數點后兩位,所以值取".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,FinishX=finishX,FinishY=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 格式而已。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號