理解盒模型
- 盒模型由四个部分组成:内容区、内边距、边框、外边距
- 盒模型中有四种盒子:
content-box
、padding-box
、border-box
、margin-box
盒模型和元素的大小
- 盒模型的大小和元素的大小不是一回事
- 盒模型的大小是
外边距+边框+内边距+内容区
- 元素的大小取决于
box-sizing
属性,它有两个值:content-box
(默认):此时元素的width
和height
属性设置的是内容区
的宽度和高度border-box
:此时元素的width
和height
属性设置的是边框+内边距+内容区
的宽度和高度
- 块级元素在没有设置
width
时,它的盒模型会始终填满其父元素的宽度。
盒模型种类
根据盒模型的不同,它们参与不同的格式化上下文
- block-level box:
display
属性为block
、list-item
、table
- inline-level box:
display
属性为inline
、inline-block
、inline-table
- run-in box:
display
属性为run-in
margin和padding的注意事项
margin
的top
和bottom
对非替换内联元素无效,例如:<span>
和<code>
margin
和padding
的属性值如果用百分比设置,那么都是相对于该元素包含块的宽度margin
的属性值如果是auto
,那么对应的外边距会自动占据包含块空间的所有可用空间
border-radius
border-radius
允许你设置元素的外边框圆角。当使用一个半径时确定一个圆形,当使用两个半径时确定一个椭圆
该属性是一个简写属性,是为了将border-top-left-radius
、border-top-right-radius
、border-bottom-right-radius
和border-bottom-left-radius
简写为一个属性
border-radius
在设置椭圆形时,使用(/
)分隔水平半轴和垂直半轴
1 | border-radius: 1em / 5em; |
box-shadow
box-shadow: inset <offset-x> <offset-y> <blur-radius> <spread-radius> <color>
,需要特别注意的是,这些长度值需要指明单位!!!inset
(可选):不使用inset
则阴影在边框外,使用inset
则阴影在边框内<offset-x>
(必选):水平偏移量<offset-y>
(必选):垂直偏移量<blur-radius>
(可选):该值越大,阴影面积越大,阴影就越大越淡。不能为负值。默认为0
,此时阴影边缘锐利<spread-radius>
(可选):取正值时,阴影扩大。取负值时,阴影缩小。默认为0
,此时阴影与元素同样大<color>
(可选):颜色。默认颜色由浏览器决定
- 如果给出了第三个长度值,则它被解释为
<blur-radius>
。如果给出了第四个长度值,则它被解释为<spread-radius>
- 如果想设置多个阴影,则不同阴影规则之间需要使用逗号分隔。越靠前的阴影规则,对应的阴影越接近显示的表层
- 如果元素同时设置了
border-radius
,那么阴影也会有圆角效果