解决方法之一: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){ |
经过搜索百度,才知道原来IE6并不是z-index属性无效,而是IE6只认祖先,这样一个规律,如果IE6无效的时候,你可以先检查IE6最顶的div 的z-index属性,里面的div是跟随祖先的变化而变化的.
并且之前的div不可以有position:relative,否则就会属性失效,跟着这两个因素