对网页上的嵌入对象使用 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 对象覆盖)。
顺便问一下,wmode
的opaque
、transparent
和window
是否有正式文档?我只能找到描述它的博客,而不是正式的文档。谢谢。
【问题讨论】:
感谢您解释需要 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 中,没有为 OPAQUE
和 TRANSPARENT
调度 MOUSE_LEAVE 事件。
使用WINDOW
可以正常工作。那个花了一些时间才发现!呜呜呜……
(注意:jediericb 提到了this bug - 类似但没有提到MOUSE_LEAVE
)
【讨论】:
以上是关于对网页上的嵌入对象使用 wmode="transparent"、"opaque" 或 "window" 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
使用 wmode="direct" 在 SWF 对象上分层 HTML 元素
wmode="opaque" 的问题和 wmmode="window" 的问题