詳解CSS透明opacity和IE各版本透明度濾鏡filter的最準(zhǔn)確用法

CSS3的透明度屬性opacity想必大家都已經(jīng)用的無(wú)處不在了。而對(duì)于不支持CSS3的瀏覽器如何進(jìn)行透明處理,保持瀏覽器效果的一致,這個(gè)估計(jì)誰(shuí)都會(huì)寫(xiě),但是涉及到filter的具體語(yǔ)法含義和各版本寫(xiě)法的不同區(qū)別,很多人都搞不準(zhǔn)確,我曾經(jīng)問(wèn)過(guò)許多群里的大牛,說(shuō)的都不是很準(zhǔn)確,網(wǎng)上的說(shuō)法就更五花八門(mén)了。今天呢,主要是重新溫習(xí)一下這個(gè)屬性,并實(shí)際測(cè)試來(lái)說(shuō)明正確的寫(xiě)法,和IE各版本的支持度和書(shū)寫(xiě)區(qū)別。
首先,Opacity屬性用來(lái)設(shè)置一個(gè)元素的透明度,取值范圍是0~1之間,不可為負(fù)值。opacity取值為1是完全不透明,取值為0是完全透明,視覺(jué)上看不見(jiàn)。關(guān)于瀏覽器對(duì)opacity屬性的兼容性請(qǐng)繼續(xù)往下看:
從Firefox3.5+不再支持私有屬性-moz-opacity了,在Mozilla 1.7 (Firefox 0.9)之前FF都是使用這個(gè)私有屬性的,F(xiàn)irefox 0.9-Firefox3同時(shí)支持-moz-opacity和opacity這兩個(gè)屬性,現(xiàn)在回想起剛?cè)肼殘?chǎng)不久那時(shí)候,正好是Firefox升級(jí)到3.5之后,一些做好的頁(yè)面透明效果突然沒(méi)有了,如今已經(jīng)CSS3鋪天蓋地,概嘆時(shí)光荏苒啊。
IE9+才開(kāi)始支持CSS3 opacity,而對(duì)IE6-IE8我們習(xí)慣使用filter濾鏡屬性來(lái)進(jìn)行實(shí)現(xiàn)。IE4-IE9都支持濾鏡寫(xiě)法progid:DXImageTransform.Microsoft.Alpha(Opacity=xx).
IE8又引入了特殊的-ms-filter,IE認(rèn)為這種寫(xiě)法是對(duì)舊寫(xiě)法的一次更正,更符合規(guī)范,這個(gè)寫(xiě)法的屬性值只是多了一對(duì)引號(hào),效果同前。不過(guò),這種寫(xiě)法的壽命也不長(zhǎng),到IE10對(duì)filter與-ms-filter都已經(jīng)不再支持。
Safari 1.2之前的版本,是基于khtml的瀏覽器內(nèi)核,1.2版發(fā)布后,不再支持-khtml-opacity的寫(xiě)法,-khtml-opacity也隨之成為歷史。
Konqueror從未支持過(guò)-khtml-opacity,從4.0版本開(kāi)始已經(jīng)支持opacity。
除IE外,目前主流瀏覽器 Opera 9.0+,Safari 1.2(WebKit 125) +,chrome等等都支持opacity這個(gè)透明度屬性。
IE 從4.0版開(kāi)始,就提供了一些內(nèi)置的多媒體濾鏡特效,具體的使用方法是:
語(yǔ)法:
filter : filter
參數(shù):
filter : 要使用的濾鏡效果。多個(gè)濾鏡之間用空格隔開(kāi)。
說(shuō)明:
1、設(shè)置或檢索對(duì)象所應(yīng)用的濾鏡效果。
2、要使用該屬性,對(duì)象必須具有height,width,position三個(gè)屬性中的一個(gè)。
3、濾鏡的機(jī)制是可擴(kuò)展的??梢蚤_(kāi)發(fā)和使用第三方濾鏡。
4、該屬性在MAC平臺(tái)上不可用。
5、對(duì)應(yīng)的腳本特性為filter。
IE4.0以上版本,支持以下14種濾鏡:
①、Alpha 讓HTML元件呈現(xiàn)出透明的漸進(jìn)效果
②、Blur 讓HTML元件產(chǎn)生風(fēng)吹模糊的效果
③、Chroma 讓圖像中的某一顏色變成透明色
④、DropShadow 讓HTML元件有一個(gè)下落式的陰影
⑤、FlipH 讓HTML元件水平翻轉(zhuǎn)
⑥、FlipV 讓HTML元件垂直翻轉(zhuǎn)
⑦、Glow 在元件的周?chē)a(chǎn)生光暈而模糊的效果
⑧、Gray 把一個(gè)彩色的圖片變成黑白色
⑨、Invert 產(chǎn)生圖片的照片底片的效果
⑩、Light 在HTML元件上放置一個(gè)光影
⑪、Mask 利用另一個(gè)HTML元件在另一個(gè)元件上產(chǎn)生圖像的遮罩
⑫、Shadow 產(chǎn)生一個(gè)比較立體的陰影
⑬、Wave 讓HTML元件產(chǎn)生水平或是垂直方向上的波浪變形
⑭、XRay 產(chǎn)生HTML元件的輪廓,就像是照X光一樣
Alpha 濾鏡參數(shù)詳解
①、Opacity 不透明的程度,百分比。 從0到100,0表是完全透明,100表示完全不透明。
②、FinishOpacity 這是一個(gè)同Opacity一起使用的選擇性的參數(shù),當(dāng)同時(shí)Opacity和FinishOpacity時(shí),可以制作出透明漸進(jìn)的效果,比較酷。 從0到100,0表是完全透明,100表示完全不透明。
③、Style 當(dāng)同時(shí)設(shè)定了Opacity和finishOpacity產(chǎn)生透明漸進(jìn)時(shí),它主要是用赤指定漸進(jìn)的顯示形狀。 0:沒(méi)有漸進(jìn);1:直線漸進(jìn);2:圓形漸進(jìn);3:矩形輻射。
④、StartX 漸進(jìn)開(kāi)始的 X 坐標(biāo)值
⑤、StartY 漸進(jìn)開(kāi)始的 Y 坐標(biāo)值
⑥、FinishX 漸進(jìn)結(jié)束的 X 坐標(biāo)值
⑦、FinishY 漸進(jìn)結(jié)束的 Y 坐標(biāo)值
下面通過(guò)一個(gè)例子來(lái)測(cè)試filter和opacity的兼容性:
Html代碼
<!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>JS Bin</title> </head> <body> <div class="transparent_class">測(cè)試透明度</div> </body> </html>
注意:測(cè)試不要忘了寫(xiě)DOCTYPE,否則會(huì)偏離真實(shí)效果。
對(duì)應(yīng)CSS代碼:
.transparent_class { /* Required for IE 5, 6, 7 */ /* ...or something to trigger hasLayout, like zoom: 1; */ width:300px; height:300px; line-height:300px; text-align:center; background:#000; color:#fff; /* older safari/Chrome browsers */ -webkit-opacity: 0.5; /* Netscape and Older than Firefox 0.9 */ -moz-opacity: 0.5; /* Safari 1.x (pre WebKit!) 老式khtml內(nèi)核的Safari瀏覽器*/ -khtml-opacity: 0.5; /* IE9 + etc...modern browsers */ opacity: .5; /* IE 4-9 */ filter:alpha(opacity=50); /*This works in IE 8 & 9 too*/ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; /*IE4-IE9*/ filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50); }
使用中,我們可以根據(jù)要適配的瀏覽器/版本,從上面選擇自己需要的代碼行。如果要全面支持所有瀏覽器,至少需要有關(guān)opacity或filter的前5句。需要聲明的是,如果你要同時(shí)使用filter和-ms-filter,請(qǐng)將-ms-filter寫(xiě)在filter的前面。原文描述如下:
If you want opacity to also work in IE8′s emulating IE7 mode, the order should be:
-ms-filter:”progid:DXImageTransform.Microsoft.Alpha(Opacity=50)”; // first filter: alpha(opacity=50); // second
If you don’t use this order, IE8 emulating IE7 doesn’t apply the opacity, although IE8 and IE7 native do.
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
通過(guò)css3動(dòng)畫(huà)和opacity透明度實(shí)現(xiàn)呼吸燈效果
這篇文章主要介紹了通過(guò)css3動(dòng)畫(huà)和opacity透明度實(shí)現(xiàn)呼吸燈效果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編2019-08-09詳解css透明度之rgba和opacity的區(qū)別及兼容
對(duì)于設(shè)置透明度,我們有兩個(gè)可以選的css3屬性:rgba 和 opacity。這篇文章主要介紹了詳解css透明度之rgba和opacity的區(qū)別及兼容,感興趣的可以一起跟隨小編來(lái)了解一下2019-01-10CSS中 opacity的設(shè)置影響了index(層數(shù))的改變的問(wèn)題總結(jié)(推薦)
這篇文章主要介紹了CSS中 opacity的設(shè)置影響了index(層數(shù))的改變的問(wèn)題,通過(guò)各種情況出現(xiàn)的問(wèn)題進(jìn)行了總結(jié)并附上了代碼,具體操作步驟大家可查看下文的詳細(xì)講解,感興趣2017-08-17css中使用rgba和opacity設(shè)置透明度的區(qū)別(附圖)
這篇文章主要介紹了css中使用rgba和opacity設(shè)置透明度的兩種方法,通過(guò)實(shí)例演示解釋了兩者之間的差別,需要的朋友可以參考下2017-08-14解決CSS3的opacity屬性帶來(lái)的層疊順序問(wèn)題
這篇文章主要介紹了解決CSS3的opacity屬性帶來(lái)的層疊順序問(wèn)題的方法,主要針對(duì)opacity的屬性值小于1的層會(huì)覆蓋在其他層之上的問(wèn)題,需要的朋友可以參考下2016-05-09詳解CSS3的opacity屬性設(shè)置透明效果的用法
這篇文章主要介紹了詳解CSS3的opacity屬性設(shè)置透明效果的用法,同時(shí)還講到了opacity透明度帶有的繼承性影響子集元素的問(wèn)題,值得初學(xué)者注意,需要的朋友可以參考下2016-05-09CSS3中的Opacity多瀏覽器透明度兼容性問(wèn)題
用來(lái)設(shè)定元素透明度的 Opacity 是CSS 3里的一個(gè)屬性。當(dāng)然現(xiàn)在還只有少部分瀏覽器支持,不過(guò)各個(gè)瀏覽器都有自己的私有屬性來(lái)支持,其中包括老版本的Mozilla和Safari2015-11-09- 這篇文章主要介紹了CSS3中的opacity屬性使用教程,主要用來(lái)設(shè)置透明效果,需要的朋友可以參考下2015-08-19
- CSS 圖像透明度opacity想必大家并不陌生吧,使其可以讓圖片或者頁(yè)面擁有透明效果,下面為大家講解下CSS opacity的使用及其兼容性,感興趣的朋友可以參考下2013-09-08
CSS Alpha透明相關(guān)知識(shí)學(xué)習(xí)-CSS教程-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
圖片的透明效果是網(wǎng)頁(yè)中需要用到的一種特殊形式,雖然不是非常的常用,但是遇到這樣的需求往往有點(diǎn)措手不及,在webjx.com的文章中雖然有這方面的CSS實(shí)例,但還沒(méi)有系統(tǒng)2008-10-17