在网页中嵌入对象时,使用wmode="transparent"、"opaque"或"window"有什么区别?

75
当使用<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,即使它们具有更高的z-index值,它也会重叠其他div。谢谢。 - raddevus
5个回答

36

6
好的,以下是内容的翻译:太好了,这里是文件的引用:wmode - 可能的取值: window, opaque, transparent。设置 Flash 动画的窗口模式属性,以实现透明度、分层和在浏览器中的定位。 window - 动画将在网页上自己矩形的窗口中播放。 opaque - 动画将遮盖页面上其它所有元素。 transparent - 动画的透明部分将显示 HTML 页面的背景,这可能会影响动画的性能。 - nonopolarity

20

不透明度会比“透明”造成更少的系统负担,因为“透明”仍然会尝试应用alpha。你看到大多数人使用“透明”是因为大多数网页作者没有注意细节(即,只是复制粘贴了一些他们发现的嵌入代码)。

顺便说一句,您关于此未记录在案的事情是正确的。我见过的最好的记录是一个人声称与Macromedia开发人员进行了交流的博客。不幸的是,我找不到链接。

编辑: 我想这可能是这个链接:http://www.communitymx.com/content/article.cfm?cid=e5141


7

另外,使用wmode=opaque和IE时,Flash会接收到键盘事件,但是HTML页面也会接收到这些事件,因此无法用于嵌入Flash游戏等用途。非常让人恼火。


1
这并没有回答问题。 - kapa
3
怎样才算是回答了问题呢?这个问题的答案非常关键,因为行为上的差异会对使用产生很大影响(我在一个非常重要的游戏网站上遇到了这个问题,导致该网站无法使用:(),但是这种差异并没有得到很好的记录。 - MegaTux
4
楼主询问这些论点的资源,我认为你的回答可以作为良好且重要的评论。 - kapa
无论这是一个问题还是答案,这都非常有帮助。谢谢! - jmq

3

2

有一件奇怪的事情是,在Chrome和Firefox中,对于OPAQUETRANSPARENT,MOUSE_LEAVE事件不会被触发。

使用WINDOW没有问题。这个问题花了一些时间才找到!真让人恼火...

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接