ie盒子模型和高级浏览器的区别

本文详细介绍了CSS中的两种盒子模型——标准W3C盒子模型与IE盒子模型的区别,并通过实例展示了如何通过doctype声明来确保跨浏览器的一致性表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

盒子模型是css中一个重要的概念,理解了盒子模型才能更好的排版。其实盒子模型有两种,分别是 ie 盒子模型和标准 w3c 盒子模型。他们对盒子模型的解释各不相同,先来看看我们熟知的标准盒子模型:

  

  从上图可以看到标准 w3c 盒子模型的范围包括 margin、border、padding、content,并且 content 部分不包含其他部分。

  ie 盒子模型

 


 

  从上图可以看到 ie 盒子模型的范围也包括 margin、border、padding、content,和标准 w3c 盒子模型不同的是:ie 盒子模型的 content 部分包含了 border 和 pading。

   例:一个盒子的 margin 为 20px,border 为 1px,padding 为 10px,content 的宽为 200px、高为 50px,假如用标准 w3c 盒子模型解释,那么这个盒子需要占据的位置为:宽 20*2+1*2+10*2+200=262px、高 20*2+1*2*10*2+50=112px,盒子的实际大小为:宽 1*2+10*2+200=222px、高 1*2+10*2+50=72px;假如用ie 盒子模型,那么这个盒子需要占据的位置为:宽 20*2+200=240px、高 20*2+50=70px,盒子的实际大小为:宽 200px、高 50px。

  那应该选择哪中盒子模型呢?当然是“标准 w3c 盒子模型”了。怎么样才算是选择了“标准 w3c 盒子模型”呢?很简单,就是在网页的顶部加上 doctype 声明。假如不加 doctype 声明,那么各个浏览器会根据自己的行为去理解网页,即 ie 浏览器会采用 ie 盒子模型去解释你的盒子,而 ff 会采用标准 w3c 盒子模型解释你的盒子,所以网页在不同的浏览器中就显示的不一样了。反之,假如加上了 doctype 声明,那么所有浏览器都会采用标准 w3c 盒子模型去解释你的盒子,网页就能在各个浏览器中显示一致了。

  再用 jquery 做的例子来证实一下。

  代码1:

<html>
<head>
<title>你用的盒子模型是?</title>
<script language="javascript" src="jquery.min.js"></script>
<script language="javascript">
var sbox = $.boxmodel ? "标准w3c":"ie";
document.write("您的页面目前支持:"+sbox+"盒子模型");
</script>
</head>
<body>
</body>
</html>

  上面的代码没有加上 doctype 声明,在 ie 浏览器中显示“ie盒子模型”,在 ff 浏览器中显示“标准 w3c 盒子模型”。

  代码2:

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html>
<head>
<title>你用的盒子模型是标准w3c盒子模型</title>
<script language="javascript" src="jquery.min.js"></script>
<script language="javascript">
var sbox = $.boxmodel ? "标准w3c":"ie";
document.write("您的页面目前支持:"+sbox+"盒子模型");
</script>
</head>
<body>
</body>
</html>

  代码2 与代码1 唯一的不同的就是顶部加了 doctype 声明。在所有浏览器中都显示“标准 w3c 盒子模型”。

  所以为了让网页能兼容各个浏览器,让我们用标准 w3c 盒子模型。

标准盒子模型IE盒子模型是CSS布局中用于计算元素尺寸的两种不同方式。 ### 标准盒子模型 (W3C 盒子模型) 根据 W3C 规范的标准盒子模型,元素的总宽度由以下几个部分组成: - **内容区域** (`content`): 这是实际显示文本、图片等的内容区。 - **内边距** (`padding`): 内容与边框之间的空间。 - **边框** (`border`): 围绕着内边距的一层边界线。 - **外边距** (`margin`): 边框之外的空间,用来分隔相邻元素。 公式表示为: ``` 总宽度 = 宽度 + 左右内边距 + 左右边框 + 左右边距 总高度 = 高度 + 上下内边距 + 上下边框 + 上下半径 ``` 例如,如果设置了一个 `div` 的宽度为 100px,并且它有 20px 的左右内边距以及 5px 的边框,则该 div 实际占用的水平空间将是: \[ 100\text{px} + 2 \times 20\text{px} + 2 \times 5\text{px} = 150\text{px} \] ### IE 盒子模型 (旧版 Internet Explorer 模型) 而在早期版本的Internet Explorer浏览器使用的“怪异模式”下的盒模型(也称为传统盒模型),所有这些值都包含在一个单一的 "width" "height" 属性之内。也就是说,在这种模型里,指定的宽高已经包括了 padding border ,即: 公式表示为: ``` 总宽度 = 宽度(已含左右内边距+左右边框) 总高度 = 高度(已含上下内边距+上下边框) ``` 这意味着如果你给一个元素设置了 width: 100px;同时还有 20px 的左右填充(padding) 及 5px 的左右边框(border),那么最终这个块级元素的实际宽度仍然是 100 像素,而其中只有部分内容占据了这 70(=100 - 40(inner-padding)-10(borders))像素的位置。 现代 Web 开发通常遵循标准盒子模型,但在处理某些特定情况或兼容老旧系统时了解这两种差异还是很有帮助的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值