浅谈CSS盒子模型

时间:2022-12-13 20:29:53

关于盒子模型

CSS盒子模型,是在网页设计中经常使用到的CSS技术,也是一种开发的思维模型。

目前主流的浏览器对于盒子模型的标准阐释和渲染效果有所不同,Google Chrome 等所使用的是标准盒子模型,而 IE 使用的则是非标准盒子模型,下面以IE盒子模型来称。

标准盒子模型

标准盒子模型以W3C标准的盒子模型为例:

浅谈CSS盒子模型

CSS盒子模型规定了元素框处理元素内容(Content)内边距(Padding)边框(Border)外边距(Margin) 的方式。

由上图可知,盒子的宽度(Width)为 内容区宽度(Content-Width),高度则为 内容区高度(Content-Height)

IE盒子模型

然而 IE 的盒子模型跟上面不同,以 IE 6 为例:

浅谈CSS盒子模型

由上图可知,此时盒子的宽度变为整个容器的宽度,即内容、内边距、边框、外边距四者加起来的宽度,而高度也为其四者的高度之和。

关于浏览器兼容性

W3C指出,一旦为页面设置了恰当的 DTD,大多数浏览器都会按照上面的图示来呈现内容。然而 IE 5 和 6 的呈现却是不正确的。根据 W3C 的规范,元素内容占据的空间是由 width 属性设置的,而内容周围的 padding 和 border 值是另外计算的。不幸的是,IE5.X 和 6 在怪异模式中使用自己的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、内边距和边框的宽度的总和。

虽然有方法解决这个问题。但是目前最好的解决方案是回避这个问题。也就是,不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。

选择W3C还是IE标准

其实两者各有好处和短处,各方的看法也各不相同。无论如何,只有在合适的环境下采用合适的渲染方式,才能有利于页面的基础开发。

避免触发IE盒模型:
使用<!DOCTYPE html>声明,让IE采用W3C盒子模型。

选择采用IE标准:
通过CSS的 box-sizing 属性来指明。其有两个可选值,一个是默认的 content-box,另一个是 border-box。如果选用后者,盒子模型则将按 IE标准进行处理。