关注互联网、体验互联网,记录成长历程

CSS盒模型,宽度与高度的计算方法

2008-03-06

当我们布局一个网页的时候,经常会遇到这样的一种情况,那就是最终网页成型的宽度或是高度会超出我们预先的计算,其实就就是所谓的CSS的盒模型造成的。

#test{margin:10px;padding:10px;width:100px;height:100px;}

如上一段的代码,很多时候我们会把它所占的位置计算成width:120px,height:120px,因为在正常的理解下,padding是内边距,应该是包括在width里面的,而margin是外边距,所以width=margin-left + margin-right + width,但是浏览器对于CSS盒模型的解释却并非如此,所以最终我们会发现布局出来的网页宽度与高度都会超出我们预期的计算,最后造成显示上的错位。

其实不然,对于test所占的位置的真正计算应该是width=margin-left + margin-right + padding-left + padding-right + width,也就是宽度真正所占的大小应该是内边距+外边距+宽度本身,也就是说test真正的大小应该是140px才对。高度的计算与宽度的计算是一样的。

而如果给test加上边框的话,这个宽度与高度的算法还应该加上边框的大小。

#test{margin:10px;padding:10px;border:5px;width:100px;height:100px;}

这里的test的宽度就应该是外边框+内边框+边框+宽度本身,所以test的width是 150px。

如下图所示,width与height真正所占的位置并不是它本身的那一小块,而应该是一直到最外面深蓝色的那个层为止。

11.jpg

分类目录:前端开发 | 标签: | 查看:8,570

4 条评论

  1. 忙什么 说道:

    说实话 老生常谈啦

    而且要在宽度的计算里,还要考虑border,虽然border通常不存在或者只有几个px的宽度。

  2. 摄氏度 说道:

    而一般最容易被人忽略的往往也是border跟padding了,因为按照正常理论来说,边框跟内边距都应该是包括在宽度或是高度里面的

  3. 呵呵 说道:

    对于不同核心的浏览器,盒模型的解释是不一样的,宽度和高度的计算也是不一样的。

  4. 黑哥哥 说道:

    有道理

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>