IE6下select覆盖div z-index无效 解决方案

遇到了IE6 select遮挡div的bug,这个bug表现为页面有浮动元素(某个div元素)在select上面时,在IE6里面select老是显示在这个浮动元素上方,该元素z-index的值多大都没有做用。
javascript

解决的思路是:IE6中iframe能够覆盖select,而div能够覆盖iframe,因此解决办法就是使用iframe元素包裹或者覆盖select元素或浮动元素,或者在select元素或浮动元素添加一个Iframe做为子元素。
  html

方法一:Iframe包裹select元素 
使用iframe包住select,这样iframe有z-index,只要在div上设置的z-index比iframe的高便可~这种方法有必定的局限性,不可能每一个select都要加个iframe吧?因此不推荐java


代码以下:git

1 <iframe style="z-index:1" style="z-index:1"><!-- 用iframe 解决此bug —> 
2     <select name="country”> 
3         <option value="1">china</option> 
4         <option value="2">japanese</option> 
5         <option value="1">U.S.A</option> 
6     </select> 
7 </iframe>

  

方法二:以Iframe做为div的子元素,覆盖select元素 
创建一个跟div同宽同高的iframe,而且z-index比div要低。这种方法推荐使用

代码以下:github

 1 <style>.T_iframe { 
 2     position: absolute;/*绝对定位保证iframe不会占用流布局空间*/ 
 3     width: 100%; /*100%保证能够覆盖整个div*/ 
 4     height: 100%; 
 5     z-index:-1; /*-1保证iframe显示在div下方*/ 
 6 } 
 7 .T_div { 
 8     position: absolute; 
 9     left:100px; 
10     top:50px; 
11     width: 300px; 
12     height: 200px; 
13     background : blue; 
14     z-index:100; 
15 } 
16 </style> 
17 <div class="T_div">
18     <span>这里能够包含其余dom元素</span> 
19     <iframe class="T_iframe"></iframe> 
20 </div> 

 

方法三:使用jQuery的bgiframe插件 若是项目引用了jQuery,推荐使用bgiframe插件来解决select的遮挡div问题,原理很简单,就是创建一个同高同宽的iframe插入到浮动元素里面,让iframe覆盖下面的select元素。

bgiframe下载地址:https://github.com/brandonaaron/bgiframe

代码以下:
dom

1 $(‘#dialog').bgiframe({width: '245px', height:'230px'});// dialog为上方浮动元素的id

参数说明: 
top:设置top位置,默认为auto 
left:设置left位置,默认为auto 
width:设置iframe宽度,默认为auto 
height:设置iframe高度,默认为auto 
opacity:设置是否透明,默认为true 
src:设置iframe的src,默认为javascript:false  布局

资料来源:http://liuna718-163-com.iteye.com/blog/1796760spa

        http://www.educity.cn/jianzhan/630261.html插件

相关文章
相关标签/搜索