1. 程式人生 > >(轉)如何在ie6/ie7/ie8中實現iframe背景透明

(轉)如何在ie6/ie7/ie8中實現iframe背景透明

最近做了一個專案,涉及到ie8iframe背景透明的問題,做了老半天,才把它搞定的,現在把我的經歷貼出來和大家分享:

眾所周知的根據W3C CSS 2.1 規範規定,''''background-color'''' 特性的預設值為 ''''transparent'''',即透明;但是IE6/IE7/IE8中 BODY 元素的背景色不是 transparent,而是 #FFFFFF;也就是變成了白色的。

其實,有一點我們是要注意的,也是必須知道的,在iframe中這個背景是其本身,不是iframe內的html元素的,所以,只對iframe進行相關設定就能去掉這個背景。(你可以試一下哦)

在iframe有個allowTransparency的屬性這個屬性就是控制它的透明度的,意思是是否允許透明;但是IE6/IE7/IE8中卻是白色;所以我們可以這樣加上它 <iframe allowTransparency="true" />,加上這個屬性,想要的效果就出來了。但是有時候是會出現一些小的問題的,如果為了追求更好的保障的話,就要加上iframe{background: transparent;},這樣你就可以的了。

但還有一些特殊情況:有時候iframe不是HTML中本身寫的,是載入進來的,這時雖然以上的CSS可以生效,但卻沒法給iframe本身加上allowTransparency屬性了,這時候要怎麼做?很簡單給它來一段js程式碼:

複製程式碼

1  window.onload = function(){
2     var ifra=document.getElementsByTagName(''''IFRAME'''');
3         for(var i=0,l=ifra.length;i<l;i++) {
4             ifra[i].setAttribute(''''allowTransparency'''',''''true'''');
5         }
6  }

複製程式碼

至此,你以為問題解決。可突然發現還是白色的背景,這是為什麼呢?那是因為iframe中的 BODY 元素的背景色不是 transparent的,所以對iframe裡的body也要設定透明化:background:transparent;由此可以看出,你要分清情況的,框架要透明,裡面的元素也要透明設定的,請記住這個屬性:background:transparent;

以上文章有深圳網路公司易捷網路科技編寫,轉載時註明出處,謝謝合作。