IE bug: 消失的绝对定位元素

IE 一如既往地带来问题。真的,我觉得 IE 坚持自己的一套无所谓,不支持或者不完全支持标准也无所谓。但是,IE6 IE7 IE8 这三个版本都有各自不同的表现,实在是太让人难受了。

前两天碰到了这个奇怪的问题:

绝对定位的元素,紧邻着两个浮动元素。Firefox 中一切正常,IE6 中绝对定位元素消失了。本文来自前端观察,转载请以链接形式注明出处。

解决方法:只要别让绝对定位元素紧邻浮动元素就可以了。比如可以在绝对定位元素后面加个空元素。当然,这个空元素是毫无意义的,但是,在 IE 面前,又能怎么样呢?

demo1

经过实验,我发现,只要浮动元素的宽度不填满父元素,绝对定位元素就能正常显示,一旦浮动元素的宽度填满父元素,绝对定位元素就会消失。而且,看来,父元素宽度是这种情况发生的临界点。本文来自前端观察,转载请以链接形式注明出处。

demo2

另外,这个 demo 里面也存在 IE6 的另一个经典 bug : 由注释产生的表现不同。(唉,bug 都成经典了,IE 无敌啊。— 糖伴西红柿)本文来自前端观察,转载请以链接形式注明出处。

请看上面的图中,上面那块,就是有注释的,下面那块是去掉注释的,可以明显的看到底部的白色空白高度是不同的。

具体效果可参见 demo

如果你喜欢本文,欢迎 订阅本站 以获得本站最新内容。

您或许也会喜欢:

15 个评论

  • 你好!站长,我从朋友的博客上找到你的网站
    顺便跟你换个友情链接好吗?我已经做好你的了,希望我们合作愉快
    我的网站叫
    奇迹林
    http://www.99n9.com
    奇迹林是一个web应用与开发人员专业素材交流与共享的乐园

  • IE6,你必须死亡!!!

  • 我直接就毙掉ie6/7/8了

  • 很怪异啊。。。

  • 试了一下,果然,真好玩。。。

  • 短短的几百字的文章出现了三次【本文来自前端观察】,让我像吃了苍蝇一样恶心。

  • 今天才知道还有这个bug,在这里学习了不少东西。
    刚才测试了一下,
    正如你所说:“只要浮动元素的宽度不填满父元素,绝对定位元素就能正常显示”,我测试时将父元素的像素递增1,直到父元素比浮动元素的总宽度大3px时,那个绝对定位的元素就显示了。
    “3px”,在IE6面前好刺眼。。最后经过几次尝试,发现将最右边的浮动元素设置margin-right:-3px,可以不加空元素正常显示出定位的元素

    • 又试了一下,设成margin-right:-2px就行了。。
      设成margin-right:-1px就不行,真诡异
      当父元素宽度比浮动元素宽1px时,设成margin-right:-1px又可以

    • IE6下,float元素相邻的position:absolute元素消失,子元全部float,absolute元素找不到自己的位置。可将absolute元素放置在浮动元素的后面,然后对其清除浮动。

  • display:inline

  • IE整个家族都该灭亡,IE9啥玩意啊,bug一大堆,并且哪天微软会像放弃XP一样对Win7说,IE12不支持Win7.

发表评论