今天,公司的項(xiàng)目中,要求用alpha blending來(lái)重畫(huà)conqueror的opacity,把瀏覽器的body容器畫(huà)透明,目的是為了露出瀏覽器窗口后面播放的流媒體,而那些控制元素還可以看見(jiàn)。為了實(shí)現(xiàn)上更容易一些,查找了conqueror是如何實(shí)現(xiàn)調(diào)節(jié)opacity的。
IE里,很容易就可以調(diào)節(jié)opacity的值,比如一張圖片,它的id="image",那么我們可以用這樣的css來(lái)設(shè)置。
<style type="text/css">
#image{
filter:alpha(opacity=30);//IE
}
</style>
微軟在它的瀏覽器中,對(duì)javascript和css都進(jìn)行了很多的擴(kuò)展,css的filter組件就是一個(gè)擴(kuò)展,大學(xué)的時(shí)候我還花了很多時(shí)間來(lái)玩filter,后來(lái)發(fā)現(xiàn)它根本不能在別的瀏覽器工作時(shí),就不用它了。
firefox里,也一樣可以,不過(guò)寫(xiě)法不一樣。代碼如下“
<style type="text/css">
#image{
-moz-opacity:0.30;? //ff
}
</style>
如果在javascript里寫(xiě)的話,對(duì)應(yīng)的屬性是.style.MozOpacity。

conqueror里,我找到的寫(xiě)法是:
<style type="text/css">
#image{
-khtml-opacity:0.30;? //conq
}
</style>
但是,我測(cè)試發(fā)現(xiàn)它不work!,又javascript來(lái)控制(.style.KhtmlOpacity),還是不work,到conqueror的官方網(wǎng)站找到的是,3.1版本以后就已經(jīng)不再支持了!!我一個(gè)下午的所有努力就這樣白費(fèi)了。

另外,還找到一個(gè)js函數(shù),用來(lái)讓各種瀏覽器支持這個(gè)屬性的
?function setOpacity(obj, opacity) {
? opacity = (opacity == 100)?99.999:opacity;
?
? // IE/Win
? obj.style.filter = "alpha(opacity:"+opacity+")";
?
? // Safari<1.2, Konqueror
? obj.style.KHTMLOpacity = opacity/100;
?
? // Older Mozilla and Firefox
? obj.style.MozOpacity = opacity/100;
?
? // Safari 1.2, newer Firefox and Mozilla, CSS3
? obj.style.opacity = opacity/100;
}

函數(shù)的第一行,一個(gè)三目運(yùn)算符,好像是針對(duì)firefox來(lái)設(shè)置的。這個(gè)函數(shù)怎么調(diào)用?我不太清楚,我讓body的onload=“setOpacity(image,20)",但是,并沒(méi)有效果。我又改了函數(shù),變成這樣:
function setOpacity(obj, opacity) {
? opacity = (opacity == 100)?99.999:opacity;
?
? // IE/Win
? document.all('obj').style.filter = "alpha(opacity:"+opacity+")";
?
? // Safari<1.2, Konqueror
? document.getElementById('obj').style.KHTMLOpacity = opacity/100;
?
? // Older Mozilla and Firefox
? document.getElementById('obj').style.MozOpacity = opacity/100;
?
? // Safari 1.2, newer Firefox and Mozilla, CSS3
? document.getElementById('obj').style.opacity = opacity/100;

不好意思,還是不工作。具體為什么?有時(shí)間再繼續(xù)研究。