对网页上的嵌入对象使用 wmode="transparent"、"opaque" 或 "window" 之间的区别

Posted

技术标签:

【中文标题】对网页上的嵌入对象使用 wmode="transparent"、"opaque" 或 "window" 之间的区别【英文标题】:differences between using wmode="transparent", "opaque", or "window" for an embedded object on a webpage 【发布时间】:2010-10-27 13:50:14 【问题描述】:

使用<object><embed> 标记嵌入Flash 对象时,有一个名为wmode 的属性。似乎大多数时候,wmode="transparent"wmode="opaque" 相同,因为 Flash 实际上没有任何透明颜色,因此要显示底部的 html 元素。因此,opaque 应该比transparent 更快,因为它需要较少的透明度处理,但大多数时候我看到 Flash 对象嵌入了transparent 而不是opaque

opaque 是必需的,以便其他 HTML 元素不会被 Flash 对象覆盖(例如弹出额外子菜单的菜单项不会被 Flash 对象覆盖)。

顺便问一下,wmodeopaquetransparentwindow 是否有正式文档?我只能找到描述它的博客,而不是正式的文档。谢谢。

【问题讨论】:

感谢您解释需要 wmode="opaque" 以便其他 HTML 元素不会被覆盖。嵌入 youtube 视频让我为此发疯。 YouTube 的默认嵌入代码不包含 wmode 并且它与其他 div 重叠,即使它们具有更高的 z-index 值。谢谢。 【参考方案1】:

以下是在不同的 flash 9 wmode 设置上的一些弱adobe documentation。

adobe bug trac 中有关于 wmode 透明的注意事项。

flash 10 的新功能是两个新的 wmode:gpu 和 direct。请参考Adobe Knowledge Base about wmode。

【讨论】:

太棒了,这是文档的引用:wmode - 可能的值:窗口、不透明、透明。为浏览器中的透明度、分层和定位设置 Flash 影片的窗口模式属性。窗口 - 电影在网页上自己的矩形窗口中播放。 opaque - 电影将页面上的所有内容隐藏在其后面。透明 - HTML 页面的背景通过电影的所有透明部分显示,这可能会降低动画性能。【参考方案2】:

不透明将减少系统压力,因为“透明”仍会尝试应用 alpha。您看到使用透明的原因是因为大多数网络作者不注意细节(即,只是复制粘贴了他们找到的一些嵌入代码)。

顺便说一句,您对它没有记录是正确的。我见过的最好的博客是一个声称与 Macromedia 开发人员谈过的人写的博客。不幸的是我找不到链接。

编辑:我认为是这个:http://www.communitymx.com/content/article.cfm?cid=e5141

【讨论】:

【参考方案3】:

另外,wmode=opaque 和 IE,Flash 获取键盘事件,但 html 页面也接收它们,所以它不能用于嵌入 Flash 游戏之类的东西。很烦人

【讨论】:

这没有回答问题。 @bazmegakapa:这怎么没有回答问题?这是一个非常重要的行为差异(我在一个非常重要的游戏网站上遇到了它,使其无法使用:()并且没有很好的文档记录。 OP 要求提供有关这些论点的资源。在我看来,你的回答会是一个很好的重要评论。 无论这属于问题还是答案,这都非常有帮助。谢谢!【参考方案4】:

Adobe KB 中有一篇关于“wmode”和其他属性关于它们对演示和性能的影响的很好的文章。

http://kb2.adobe.com/cps/127/tn_12701.html

【讨论】:

【参考方案5】:

奇怪的是,在 Chrome + Firefox 中,没有为 OPAQUETRANSPARENT 调度 MOUSE_LEAVE 事件。

使用WINDOW 可以正常工作。那个花了一些时间才发现!呜呜呜……

(注意:jediericb 提到了this bug - 类似但没有提到MOUSE_LEAVE

【讨论】:

以上是关于对网页上的嵌入对象使用 wmode="transparent"、"opaque" 或 "window" 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

使用 wmode="direct" 在 SWF 对象上分层 HTML 元素

将任意 Flash 对象 wmode 更改为透明

wmode="opaque" 的问题和 wmmode="window" 的问题

YouTube iframe 嵌入的 wmode 参数

如何将 wmode=transparent 动态添加到 Youtube 嵌入代码?

flash视频嵌入