IE 盒模型和W3C盒模型区别

盒模型在初学css的时候就会接触到,其实很容易理解,这里也不多废话,但是实际上在布局的时候还是会出现很多问题。对于盒模型的认识不能只停留在知道一个盒模型由哪些部分构成,也要更多的了解如何在不同情况下利用盒模型的特点进行布局。
这里讨论一下两种不同的盒模型: W3C盒模型和IE盒模型。
其实IE的盒模型问题只会出现在IE5.5及其更早的版本中,因为在IE6及更新的版本在标准兼容模式下使用的是W3C的盒模型标准,但事实上不仅IE5.5,连IE6的使用率也很少了,这里对他们进行讨论只是为了更深刻的理解盒模型。
对于两种模型这里有一张图:


W3C盒模型和IE浏览器盒模型

可以看到IE的盒模型与W3C盒模型的区别在与width的计算,这说明什么问题呢?我们在设置样式的时候经常会用到margin和padding还有width,对于下面html文件:

<!-- 没有声明 -->
<html>
<head lang="ch">
    <meta charset="UTF-8">
    <title></title>
    <style>
        .box{
            float:left;
            width: 100px;
            height: 100px;
            background-color: #ff9000;
        }
        .container{
            width: 200px;
            padding: 10px;
            background-color: #f00;
            overflow: hidden;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box"></div>
        <div class="box"></div>
    </div>
<script>
</script>
</body>
</html>

不管是不是IE,浏览器下显示的效果都是:


微信截图_20181014002549.png

可以看到container正好将两个box包装起来。

但加入给container添加一个padding如下:

.container{
    width: 200px;
    background-color: #f00;
    overflow: hidden;
    padding: 10px;
}

则其在非IE下的样式为:


微信截图_20181014002638.png

但在IE下为:


微信截图_20181014002652.png

IE中的box换行了,这就是因为IE中的width是包括了padding的,而W3C也就是我们平常使用的盒模型不包括,不管padding加多少内容区域的宽度不会改变,这也十分合理。
避免触发IE盒模型的方法是使用<!DOCTYPE html>声明,告诉IE采用W3C盒子模型即可。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,863评论 1 92
  • 1. 前言 前端圈有个“梗”:在面试时,问个css的position属性能刷掉一半人,其中不乏工作四五年的同学。在...
    YjWorld阅读 4,649评论 5 15
  • 盒模型 盒模型(box model)是CSS中的一个重要概念。在一个网页文档中,每个元素都被呈现为一个矩形的盒子,...
    饥人谷_易燃阅读 5,166评论 0 3
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,911评论 1 45
  • 我在《把vim配置成顺手的python轻量级IDE(一)》中介绍了一些vim的插件,那些插件对于应付简单的实验已经...
    yiekue阅读 6,741评论 12 30