解决html元素被flash遮挡解决办法
<param name=”wmode" value="xxxx">
"Window" 在 Web 页上用影片自己的矩形窗口来播放应用程序,并且始终位于最顶层。
"Opaque" 显示页面上位于它后面的内容。
"Transparent"使 HTML 页的背景可以透过应用程序的所有透明部分显示出来,并且可能会降低动画性能。
注:"Opaque"和"Transparent"都可与 HTML 层交互,从而允许 SWF 文件上方的层遮蔽应用程序。这两种选项之间的差异在于"Transparent"允许透明,因此,如果 SWF 文件的某一部分是透明的,则 SWF 文件下方的 HTML 层可以透过该部分显示出来,而"opaque"则不会显示。
也就是如果发生FLASH遮盖DIV层的情况,就必须要改wmode属性为“Transparent”
在做web开发中可能会遇到flash遮挡页面中元素的情况,无论怎么设置flash容器和层的深度(z-index)也无济于事,现有的解决方案是在插入flash的embed或object标签中加入”wmode”属性并设置为wmode=“transparent”或”opaque”,
1. 为导航所在的层设置position:relative;z-index:9
2. 为flash所在层设置position:relative;z-index:0 (z-index值只要比导航层小就可以了)
3. 为flash加上:<param value=”transparent” name=”wmode”> ,embed标签中加上 wmode=”transparent”
代码如下 | |
<div style="position:relative;z-index:9> ... 这里是导航 ... </div> <div style="position:relative;z-index:0"> <object width="940" height="180" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param value="1.swf" name="movie"> <param value="transparent" name="wmode"> <param value="high" name="quality"> <embed width="940" height="180" type="application/x-shockwave-flash" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="1.swf"> </object> </div> |
注意:
设置了position:relative的html必须是同辈元素;
embed标签中也必须加上 wmode=”transparent”,否则chrome下还是会被遮挡。
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”会导致全屏模式失效