• 党中央关于IE6下select耍流氓的问题报告 - [WEB]

    Tag:

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://cookiy.blogbus.com/logs/48480183.html

        题记:什么叫屎命,这就叫屎命啊!

        临下班,程序丢过来一个问题,IE6下SELECT框去不掉,得此讯息,心一沉,糟了,碰到IE6刷流氓的时候了,没办法,这就是屎命啊,解决!

     

        网上股沟了下,终于得到了解决办法,处理了两下,终于解决了,美中不足的是ifraem不能height:auto,愁

     

    原理:

    在IE中,select属于window类型控件,它会“挡住”所有非window类型控件可以这么理解。div这样的组件是在浏览器客户区使用代码“渲染”的,他们被渲染在客户区的绘画表面上,而select是使用的标准windows控件,只是作为客户区的子控件放置而已。
    IE7解决了此类BUG。

    有多种种办法;
    1. 修改select,不用标准select,而是自己用其他html元素模拟
    2. 修改你的div,使用iframe。
    3. 在div被显示的时候或者到达select所在位置时隐藏select
    4. 在div中或div的同一坐标上,用相同尺寸的iframe先遮挡一下,然后在iframe上显示div的内容。
    5.Object对象的优先度较高,可以挡住select框、

     

    从解决方案来看,根据页面代码的不同,选择不同的方法,我是用了2,iframe来代替以前的div

     

    问题:

    在IE6中select总可以挡住div.而z-index值较大的iframe可以挡住 select;z-index值较大的div可以挡住iframe(真不知道IE6为什么要搞这样一物降一物的设计...),于是解决这个方法的思路就是 用z-index值高于select的iframe挡住select,再用z-index值高于iframe的div挡住iframe.设置iframe 的尺寸足够盖住select就可以了.

    解决方案:在iframe里写生z-index:-1;

     


    收藏到:Del.icio.us