首页 > 网站优化 > css

IE6下select z-index无效div被遮挡解决办法

发布时间:2017-7-6 23:13

文章来详细的举了三个实例来介绍关于IE6下select z-index无效div被遮挡解决办法,有碰到类是问题的同学可参考一下解决方案。

解决方法之一:Iframe包裹select元素

使用iframe包住select,这样iframe有z-index,只要在div上设置的z-index比iframe的高即可~这种方法有一定的局限性,不可能每个select都要加个iframe吧?所以不推荐!代码如下:

 代码如下 复制代码
<iframe style="z-index:1;position: absolute; "><!-- 用iframe 解决此bug -->
 <select name="country">
  <option value="1">china</option>
  <option value="2">japanese</option>
  <option value="1">U.S.A</option>
 </select>
</iframe>


解决方法之二:以Iframe作为div的子元素,覆盖select元素

建立一个跟div同宽同高的iframe,并且z-index比div要低。这种方法推荐使用

 代码如下 复制代码

<style type="text/css">
.T_iframe
{
 position: absolute; /*绝对定位保证iframe不会占用流布局空间*/
 width: 100%; /*100%保证可以覆盖整个div*/
 height: 100%;
 z-index:-1; /*-1保证iframe显示在div下方*/
 left:0px;
 top:0px;
}
.T_div
{
 position: absolute;
 left:100px;
 top:50px;
 width: 300px;
 height: 200px;
 background : blue;
 z-index:100;
}
</style>
<div class="T_div">
 <span>这里可以包含其他dom元素</span>
 <iframe class="T_iframe"></iframe>
</div>

javascript解决办法

显示div的同时隐藏select

 代码如下 复制代码

<SCRIPT LANGUAGE="JavaScript" defer>
<!--
var elms = document.getElementsByTagName("select");
for (var i=0;i<elms.length;i++)
if (elms[i].type=="select-one") cover(elms[i]);

function cover(s){
s.onmouseout = hideSelect;
s.onblur = hideSelect;
if (s.onchange==null)
s.onchange = resetSelectValue;
else{
s.doOnchange = s.onchange;
s.onchange = function(){this.doOnchange();resetSelectValue()}
}
var t = document.createElement("input");
t.style.width = s.offsetWidth;
t.value = s.options[s.selectedIndex].text;
t.onmouseover = showSelect
document.body.insertBefore(t,s)
s.style.display="none";
}
function showSelect(){
var e = event.srcElement;
e.style.display="none";
e.nextSibling.style.display="inline";
}
function hideSelect(){
var e = event.srcElement;
e.style.display="none";
e.previousSibling.style.display="inline";
e.blur();
}
function resetSelectValue(){
var e = event.srcElement;
e.previousSibling.value = e.options[e.selectedIndex].text
e.blur();
}
//-->
</SCRIPT> 

经过搜索百度,才知道原来IE6并不是z-index属性无效,而是IE6只认祖先,这样一个规律,如果IE6无效的时候,你可以先检查IE6最顶的div 的z-index属性,里面的div是跟随祖先的变化而变化的.

并且之前的div不可以有position:relative,否则就会属性失效,跟着这两个因素

标签:[!--infotagslink--]

您可能感兴趣的文章: