在 HTML 中嵌入 Flash (SWF) 時,預設背景為不透明矩形,會遮蓋網頁底層元素。添加 wmode="transparent" 參數可使 SWF 背景透明,實現與網頁元素疊加、非矩形顯示區域等效果。
<object ...>
<param name="movie" value="your.swf" />
<param name="WMode" value="Transparent" />
...
</object>
<embed src="your.swf" ... wmode="transparent" />
var params = { wmode: "transparent" };
swfobject.embedSWF("your.swf", "flashContent", "550", "400", "10.0.0", "expressInstall.swf", {}, params);
| 項目 | 說明 |
|---|---|
| 效能 | 透明模式需額外合成運算,**CPU/GPU 佔用較高**,移動設備上可能導致幀率下降。 |
| 文字輸入 | 部分瀏覽器/版本下,透明模式下 Flash 內文字輸入框無法獲得焦點或輸入法異常。 |
| 滑鼠事件穿透 | 透明區域滑鼠事件會穿透到下層 HTML 元素,可能影響互動邏輯。 |
| 全螢幕 | 全螢幕模式下 wmode 失效,背景強制不透明。 |
| 替代方案 | 若僅需矩形無背景,建議 SWF 內部設定舞台背景色與網頁一致,或使用 wmode="opaque"(不透明但可讓 HTML 元素覆蓋在 SWF 上方),效能優於 transparent。 |
param 名稱大小寫(WMode 不區分大小寫)、embed 屬性拼寫、瀏覽器快取(強制刷新)。wmode="opaque" 或要求用戶點擊輸入框聚焦。簡單來說:在 <param> 與 <embed> 中加入 wmode="transparent" 即可啟用 Flash 透明背景,但需權衡效能與相容性。