今天我说说iframe解决的一般方法,已经使用jQuery插件bgiframe解决IE6 select z-index无效,遮挡div的bug 。
解决方法之一:Iframe包裹select元素
使用iframe包住select,这样iframe有z-index,只要在div上设置的z-index比iframe的高即可~这种方法有一定的局限性,不可能每个select都要加个iframe吧?所以不推荐!代码如下:
复制代码代码如下:
iframe style="z-index:1" style="z-index:1"!-- 用iframe 解决此bug --
select name="country"
option value="https://www.rkxy.com.cn/dnjc/1"china/option
option value="https://www.rkxy.com.cn/dnjc/2"japanese/option
option value="https://www.rkxy.com.cn/dnjc/1"U.S.A/option
/select
/iframe
解决方法之二:以Iframe作为div的子元素,覆盖select元素
建立一个跟div同宽同高的iframe,并且z-index比div要低 。这种方法推荐使用:
复制代码代码如下:
style.T_iframe
{
position: absolute;/*绝对定位保证iframe不会占用流布局空间*/
width: 100%; /*100%保证可以覆盖整个div*/
height: 100%;
z-index:-1; /*-1保证iframe显示在div下方*/
}
.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
解决方法之三:使用jQuery的bgiframe插件
如果你的项目引用了jQuery,那么我推荐使用bgiframe插件来解决select的遮挡div问题,原理很简单,就是建立一个同高同宽的iframe插入到div中去~bgiframe下载地址:http://github.com/brandonaaron/bgiframe,使用方法:
$(’.fix-z-index’).bgiframe();
参数说明:
复制代码代码如下:
top:设置top位置,默认为auto
left:设置left位置,默认为auto
width:设置iframe宽度,默认为auto
height:设置iframe高度,默认为auto
opacity:设置是否透明,默认为true
src:设置iframe的src,默认为javascript:false
推荐阅读
- CSS优先级和!important与IE6的BUG讨论及解决方案
- jquery-multiselect在ie6里的一个bug的解决方法
- IE6下CSS多类选择符优先级不起作用的bug分析及解决方法
- ie6中li插入图片后下方有空隙(经典bug)多种解决方法
- IE6下js通过css隐藏select的一个bug
- IE6中奇数宽高的BUG
- IE6下css设置容器高度的BUG不能小于某个值
- IE6 为什么最多人使用
- 关于IE6下Li标签左边多出宽16pxBUG的问题
- 固定窗口方法 IE6 position:fixed bug