现在的位置: 首页 > 综合 > 正文

DIV层在IE6下被下拉框遮挡的解决方法

2017年11月06日 ⁄ 综合 ⁄ 共 1603字 ⁄ 字号 评论关闭

在网页制作中,经常会遇到DIV层被Flash、input、select等控件遮住一部分的现象。
这时单单用z-index属性根本毫无作用。
Flash解决方法:
Flash插入网页中,如果和其他元素有重叠,无论我们如何设置z-index,Flash都会浮在其
他元素之上.这是为什么呢?其实与z-index无关,浏览器解析页面时,会先判断元素的类型,
如果是窗口类型的,会优先于非窗口类型的元素,显示在页面最顶端,如果同属非窗口类型
的,才会去判断z-index的大小.
Flash嵌入网页中,有个wmode属性,用于指写窗口模式,其值有window(窗口)、
opaque(非窗口不透明)、transparent(非窗口透明)三种。其中window表示Flash以
窗口形式显示,opaque和transparent表示Flash以窗口形式显示,如果不显示设置
wmode属性,默认wmode的值为window。所以,如果我们没有设置wmode值,或者
设置wmode为window的话,Flash是以窗口类型显示的,其Z轴的优先级是高于所有非
窗口类型的元素的,无论我们如何设置z-index也不会有效果。解决的办法就是设置
wmode属性为opaque或transpartent。因为Flash在IE和Firefox下是用不同的标签嵌
入的(IE下以object标签嵌入,Firefox下以embed标签嵌入),所以我们需要对两种标签
分别进行设置,如代码:
<object width="640" height="90" type="application/x-shockwave-Flash" classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000">
<param value="****.swf" name="movie"></param>
<param value="opaque" name="wmode"></param>
<embed width="640" height="90" wmode="opaque" type="application/x-shockwave-Flash" src="****.swf"></embed>
</object>
复制代码
对于Flash控件,在<object>中增加属性<param name="wmode"
value="opaque">或<param name="wmode" value="transparent">即可。
opaque和transparent基本上差不多,只是在某些特殊情况下有点不同。
opaque在flash中需要用到输入法时输入法软件会定位不准。
transparent在同一页面中用得太多的话会有性能问题。
Select解决方法:
<style type="text/css">
#test{width:200px;height:200px;background:green;position:absolute;left:50px;top:10px;z-index:2}
#testMask{width:200px;height:200px;position:absolute;left:50px;top:10px;z-index:1;}
</style>
<select><option>--请选择--</option></select>
<div id="test"></div>
<iframe id="testMask" frameborder="0" scrolling="no"></iframe>
复制代码
同样的,select元素在IE6下也是以窗口形式显示的,这是IE6的一个BUG。
虽说DIV直接盖不住select,
但是DIV可以盖iframe,而iframe可以盖select,
所以,把一个iframe用来当作DIV的底,
这个DIV就可以盖住select了

抱歉!评论已关闭.