zoukankan      html  css  js  c++  java
  • 网页布局中IE6.0以下版本常见的bug汇总

    现在浏览器世界,什么都在升级,兼容性越来越好,布局出来的效果也很炫,可是有时候我们又不得不抱怨,有很多的人就像博物馆里的古董一样,不喜欢改旧换新,一直沿用着老版本的浏览器,给我们程序员带来了很大的麻烦,麻烦的不是他们换浏览器,而是浏览器里的BUG,让我们很头疼,这不,我现在就遇到了好多的问题,在火狐、苹果、谷歌等浏览器都目测正常,到了IE,哇呀。。。。惨目忍睹,怎么这样了呀,其他浏览器不是好好的吗?好吧,微软的比较特殊,不想改,但又不得不改,市场占有率IE仍然是龙头老大呀,必须考虑一下它的感受,改吧!以下是常见的IE bug:

    bug1、居中问题

    css代码:

    #main{
       margin:0 auto;
       980px;
       height:500px;
       background:#f00;
    }
     

    HTML代码:

    <!doctype html>
    <html>
    <head>document title</head>
    <title></title>
    <head>
    <body>
    <div id="main"></div>
    </body>
    </html>
     

    就是这样的代码,在如今主流浏览器都测试通过,以及IE6.0以上版本的浏览器也可以正常通过,可是一到了IE6.0及IE6.0以下版本,哇呀,都靠右了,怎么弄都不好使。怎么办呢?解决办法有二:

    方法一、加入DTD文档头,代码如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <xmlns="http://www.w3.org/1999/xhtml">
     

    加了上面这段,则浏览器会根据W3C的标准去解释和渲染,解决了IE中不居中的问题。

    方法二、在body的css样式中加入下面代码:

    body{
       text-align:center;
    }
     

    加入以上代码,则在IE6.0以下版本都会将body体里的内容全部居中。

    bug2、双倍margin问题

    问题描述:元素设置float后,不管是左浮动还是右浮动,margin边距是定义数值的两倍。

    CSS代码如下:

    #main{
       float:left;
       margin-left:30px;
       400px;
       height:400px;
       background:#eee;
    }
     

    期望的结果是离左边的边距是30px;而在IE6.0版本以下的的结果却出现了60px。

    解决办法:

    在CSS样式表中加入代码:

    _display:inline;

    以上这段代码只有IE版本的浏览器才能识别,这样就解决了双倍margin的问题,也不影响其他浏览器上的显示效果。

    bug3、子DIV设置浮动后,父DIV自适就高度失效。

    解决办法有以下三种,常用的有以下两种。

    (1)设置父DIV的CSS代码为如下:

    #main{
       overflow: hidden;
       zoom:1;
    }
     

    (2)设置父DIV的CSS代码如下:

    #main{
       clear:both;
    }
     

    (2)新增一个子DIV并设置该DIV的CSS代码为如下:

    #main{
       clear:both;
       overflow:hidden;
       0px;
       height:0px;
    }
     

    4、设置min-height和min-width,IE忽略了min-height。

    解决办法:

    (1)这个fix由 Dustin Diaz提供。其利用了 !important 下面是代码片段,我是从网上截取下来的,具体还没遇到过:  

    css代码如下:

    #main {
       min-height:150px;
       height:auto !important;
       height:150px;
    }
    1.
    2.
    3.
    4.
    5.

    (2)代码如下

    #main {
       min-height: 150px;
       height: 150px;
    }
    html>body #main {
       height: auto; 
    }
     

    5、Fixing the Broken Box Model

    IE曲解了“盒子模子”可能是最不可原谅的事情了。IE 6 这个半标准的浏览器回避了这个事情,但这个问题还是会因为IE运行在“怪异模式”下出现。
    两个Div元件。一个是有fix的,一个是没有的。而他们不同的高和宽加上padding的总合却是不一样的。

    解决办法:

    #main{
       400px;
       height:100px;
       padding:50px;
    }
     
    #main{
        400px;
       height: 150px;
       height: 250px;
        500px
    }
     

    是的,以上这段代码就是告诉浏览器你要原来的长和宽上加上了padding。但这个fix只会作用于IE了的“怪异模式”,所以你不需要担心在IE6的正常模式下会有问题。

    6、3像素margin问题。

    先看一下代码:

    HTML代码:

    <div class="bro1">div1</div>
    <div class="bro2">div2</div>
     

    CSS代码:

    <style type="text/css">
        .bro1{
            float: left;
            200px;
            height:200px;
            background: pink;
        }
        .bro2{
             200px;
            height: 200px;
            background: silver;
        }
    </style>
     

    主流浏览器运行效果图如下:

    网页布局中IE6.0以下版本常见的bug汇总

    而IE6.0版本以下的效果图如下,出现了3像素margin:

    网页布局中IE6.0以下版本常见的bug汇总

    由以上现象可以说明,3像素margin是由开发者书写不规范所造成,解决方法可以设置两DIV都为浮动就可以了,代码如下:

    <style type="text/css">
        .bro1{
            float: left;
            200px;
            height:200px;
            background: pink;
        }
        .bro2{
            float: left;
             200px;
            height: 200px;
            background: silver;
        }
    </style>
     

    以上就是我工作中遇到的BUG,还有很多,只是我还没遇到,如果大家有遇到 ,请一起交流一下,如我遇到新的BUG,我会继续补充上去。

    哥们些,赶快抛弃IE7以下的吧!不要再做“古董”了。。。

  • 相关阅读:
    javascript专业八级测试答案整理
    HTML中的attribute和property
    Ajax的原理和应用
    jQuery提交form表单
    使用JavaScript和Canvas实现下雪动画效果
    JavaScript经典代码总结
    从HTML5移动应用现状谈发展趋势
    前端单元测试总结及测试工具介绍
    Web缓存基础:术语、HTTP报头和缓存策略
    为IIS Express添加MIME映射
  • 原文地址:https://www.cnblogs.com/mingjixiaohui/p/5278044.html
Copyright © 2011-2022 走看看