宽度的定义
宽度width
(与高度height
)是在网页布局中经常用到的属性,但作为新手容易会对两者的定义产生误解。下面我们给出width
与height
的准确定义:
- 一般地,一个元素的
width
被定义为从左内边界到右内边界的距离,height
则是从上内边界到下内边界的距离。
上述定义很清晰地指出,元素的width
只是元素content
内容区的宽度,不包括padding
,border
, 与margin
,即元素的width
并不表示元素的可视宽度。
使用auto与text-align:center的区别
auto
与text-align:center
都是在局中排版中常会用到的属性设置,他们很容易被混用,下面我们给出两者的准确定义:
- 如果设置
width
、margin-left
或margin-right
中的某个值为auto
,而余下两个属性指定为特定的值,那么设置为auto
的属性会确定所需的长度,从而使元素框的宽度等于父元素的width。 - 而
text-align:center
只用于居中块级元素中的内联内容。
因此,当我们想让一个块级元素在另一个块级元素中居中时(比如p
在某个div
中),text-align:center
是无效的,而可以通过设置width:auto
或者margin:auto
实现自动局中效果。
百分比
百分比是实现页面自适应的重要途径,而元素百分比的宿主到底是谁一直是令人困扰的问题。其实CSS对于百分比的定义十分明确:
- 所有元素的百分比都是相对于其包含块( containing block)的
width
。 - 在盒模型的设置属性中,除了
height
的百分比是相对于包含块的height
,其余的width
、margin
(不管是横向的margin-left
还是纵向的margin-right
)、padding
(同上)都是相对于包含块的width
。
至此我们发现,包含块( containing block)的确切定义就显得尤为重要。有时间的情况下会在这篇中进行进一步的补充或新开一篇进行介绍。