¶盒子模型的高度和宽度的概念
-
内容的宽度和高度
就是通过对标签的width/height属性设置的值。
-
元素的宽度和高度
宽度=左边框+左内边距+width+右内边距+右边框
高度=上边框+上内边距+height+下内边距+下边框
-
元素空间的宽度和高度
宽度=左外边距+左边框+左内边距+width+右内边距+右边框+有外边距
高度=上外边距+上边框+上内边距+height+下内边距+下边框+下外边距
¶盒子模型外边距叠加和合并的现象
- 在默认布局的水平方向上,默认情况下外边距是会叠加的。盒子之间的距离等于两个盒子各自的相邻外边距之和。
- 在默认布局的垂直方向上,默认情况下外边距是不会叠加的,而是会出现合并现象,两个盒子中相邻外边距大的决定盒子之间的距离。
- 水平方向外边距叠加现象
1 |
|
- 垂直方向外边距合并现象
1 |
|
¶padding和border对元素宽高的影响
增加padding
之后元素的宽高也会发生改变,但是内容的宽高不改变。如果增加padding
之后仍要保持元素的宽高,那么就要减去内容的宽高。
同理,增加border
之后元素的宽高也会发生改变,但是内容的宽高不改变。如果增加border
之后仍要保持元素的宽高,那么就要减去内容的宽高。
注意:margin
的增加不会对元素的宽高产生影响。
css3中新增了一个box-sizing
的属性,这个属性可以保证给盒子增加padding
和border
之后,元素的宽高不会发生改变,原理与上述一样,即自动减去内容的宽高。
box-sizing
的取值:
content-box
# 元素的宽高=边框+内边距+内容宽高border-box
#元素的宽高=原本设置的width/height
值。
1 |
|
¶清除默认边距
在企业开发中为了更好控制盒子的宽高和计算盒子的宽高等等,一般在编写代码时的第一件事就是清除盒子默认的内外边距。
由于元素种类较多,盒子的内外边距不尽相同,甚至有的元素默认没有内外边距。故清除默认边距的方法可以用通配符选择器来设置,格式如下:
1 | *{ |
但是用通配符选择器会遍历页面所有的标签,导致性能不良好,故企业开发中一般使用以下清除默认边距的格式:
1 | body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0} |
可从http://yui.yahooapis.com/3.18.1/build/cssreset/cssreset-min.css中复制。