wmode解決flash透明及層深問題
在做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屬性的值了。
相關文章
- 解決彈出層被Flash擋住的問題
- 資料庫層面問題解決思路資料庫
- Harbor搭建及配置 問題解決
- Git常見問題及解決Git
- 跨域問題及解決方案跨域
- redis安裝及問題解決Redis
- 解決小程式遮罩層滾動穿透問題遮罩穿透
- IPython的安裝及問題解決Python
- WordPress:常見問題及解決方案
- django安裝xadmin及問題解決Django
- Nacos 常見問題及解決方法
- UltraEdit常見問題及解決教程
- 死磕生菜 -- lettuce 間歇性發生 RedisCommandTimeoutException 的深層原理及解決方案RedisException
- C++---寫時拷貝解決深淺拷貝問題C++
- 問卷調查中常見問題及解決方法
- 快取三大問題及解決方案快取
- Kafka常見的問題及解決方案Kafka
- 快取常見問題及解決方案快取
- Fabric 環境搭建遇到問題及解決
- matplotlib中文報錯問題及解決方案
- CAS導致的ABA問題及解決
- Xcode 10.1 新特性及解決的問題XCode
- 爬蟲常見問題及解決方式爬蟲
- nodejs 近期所遇到的問題及解決NodeJS
- 華為資深架構師:Cloud Native架構一致性問題及解決方案架構Cloud
- 構建Potatso問題集錦及解決方案
- 近期工作遇到的問題及解決方式收藏
- Oracle 錯誤總結及問題解決 ORAOracle
- 使用API28報錯問題及解決API
- TCP 粘包 - 拆包問題及解決方案TCP
- JavaScript 中精度問題及解決思路彙總JavaScript
- JS中toFixed()方法的問題及解決方案JS
- redis快取相關問題及解決方案Redis快取
- Python執行緒安全問題及解決方法Python執行緒
- 【解決方法】正常遊覽Flash頁面,解決主流遊覽器的不支援問題(如Edge,Firefox)Firefox
- 函式計算|如何使用層解決依賴包問題?函式
- vue渲染時閃爍{{}}的問題及解決方法Vue
- Android應用安全常見問題及解決方案Android
- Web 學習之跨域問題及解決方案Web跨域