在flash標簽中
<param name=”wmode" value="xxxx">
"window" 在 web 頁上用影片自己的矩形窗口來播放應用程序,并且始終位于最頂層。
"opaque" 顯示頁面上位于它后面的內容。
"transparent"使 html 頁的背景可以透過應用程序的所有透明部分顯示出來,并且可能會降低動畫性能。
注:"opaque"和"transparent"都可與 html 層交互,從而允許 swf 文件上方的層遮蔽應用程序。這兩種選項之間的差異在于"transparent"允許透明,因此,如果 swf 文件的某一部分是透明的,則 swf 文件下方的 html 層可以透過該部分顯示出來,而"opaque"則不會顯示。
也就是如果發生flash遮蓋div層的情況,就必須要改wmode屬性為“transparent”
在做web開發中可能會遇到flash遮擋頁面中元素的情況,無論怎么設置flash容器和層的深度(z-index)也無濟于事,現有的解決方案是在插入flash的embed或object標簽中加入”wmode”屬性并設置為wmode=“transparent”或”opaque”,但wmode屬性到底是什么意義,為什么可以解決這個問題呢?
window mode(wmode)
wmode即窗口模式總共有三種,看看當年macromedia官方的說法:
window 模式
默認情況下的顯示模式,在這種模式下flash player有自己的窗口句柄,這就意味著flash影片是存在于windows中的一個顯示實例,并且是在瀏覽器核心顯示窗口之上的,所以flash只是貌似顯示在瀏覽器中,但這也是flash最快最有效率的渲染模式。由于他是獨立于瀏覽器的html渲染表面,這就導致默認顯示方式下flash總是會遮住位置與他重合的所有dhtml層。
但是大多數蘋果電腦瀏覽器會允許dhtml層顯示在flash之上,但當flash影片播放時會出現比較詭異的現象,比如dhtml層像被flash刮掉一塊一樣顯示異常。
opaque 模式
這是一種無窗口模式,在這種情況下flash player沒有自己的窗口句柄,這就需要瀏覽器需要告訴flash player在瀏覽器的渲染表面繪制的時間和位置。這時flash影片就不會在高于瀏覽器html渲染表面而是與其他元素一樣在同一個頁面上,因此你就可以使用z-index值來控制dhtml元素是遮蓋flash或者被遮蓋。
transparent 模式
透明模式,在這種模式下flash player會將stage的背景色alpha值將為0并且只會繪制stage上真實可見的對象,同樣你也可以使用z-index來控制flash影片的深度值,但是與opaque模式不同的是這樣做會降低flash影片的回放效果,而且在9.0.115之前的flash player版本設置wmode=”opaque”或”transparent”會導致全屏模式失效。
了解了各種模式的實現方式和意義在以后的開發中就可以按照具體情況選擇設置wmode屬性的值了。
新聞熱點
疑難解答