前言: 盒子模型分为IE盒模型和W3C标准盒模型, IE盒模型指的是IE6之前IE浏览器所识别的盒子模型, IE6之后IE浏览器在标准兼容模式下使用的是W3C标准盒模型, 本文只研究W3C标准盒模型
盒子包括4部分, 从里到外分别是: content
(内容)、border
(边框)、padding
(内边距)、margin
(外边距)
标准盒子模型中的CSS属性
width属性
语法: width : 数值 + 单位
height属性
语法: height : 数值 + 单位
border整合属性
语法: border: width style color
注意点: 三个属性值均允许省略(缺失), 但不建议
分类属性:
- 按方向(
direction
)细分:border-top
、border-right
、border-bottom
、border-left
- 按类型(
type
)细分:border-width
(边框大小)、border-style
(边框样式)、border-color
(边框颜色)
注意点:
边框的方向属性语法:
border-(direction) : width style color
border
整合属性实际是同时设置四个方向属性的width
、style
、color
根据 方向 和 类型 可以继续细分出
border-(direnction)-(type)
12个属性border-color
不设值, 默认和目标元素的前景色(color
)一致border-style
常用值
padding整合属性
语法: padding: val
可按 方向 细分: padding-top
、padding-right
、padding-bottom
、padding-left
注意点:
- 可取值 auto(自动) 或者 具体数值 + 单位
padding
整合属性, 设置4个值时, 表示分别设置 上右下左 方向的内边距padding
整合属性, 只设置一个值, 表示同时四个方向的内边距padding
整合属性设置2个值, 即padding : x y
, 表示 padding-left 和 padding-right 的值为x
, padding-top 和 padding-bottom 的值为y
padding
整合属性设置3个值, 即padding: left y right
, 表示 padding-left 值为left
, padding-right 值为right
, padding-top 和 padding-bottom 的值为y
margin整合属性
语法: margin : val
可按 方向 细分: marigin-top
、margin-right
、margin-bottom
、margin-left
注意点:
- 可取值 auto(自动) 或者 具体数值 + 单位
margin
整合属性, 设置4个值时, 表示分别设置 上右下左 方向的外边距margin
整合属性, 只设置一个值, 表示同时四个方向的外边距margin
整合属性设置2个值, 即margin: x y
, 表示 margin-left 和 margin-right 的值为x
, margin-top 和 margin-bottom 的值为y
margin
整合属性设置3个值, 即margin: left y right
, 表示 margin-left 值为left
, margin-right 值为right
, margin-top 和 margin-bottom 的值为y
box-sizing属性
CSS3属性, 设置元素的盒模型的表现形式
语法: box-sizing : content-box(默认值, 标准盒模型)|border-box(可理解为IE盒模型)
观察上图可得, 当 box-sizing
设置为 border-box
时:
width
包括 content、padding-left、padding-right、border-left、border-rightheight
包括 content、padding-top、padding-bottom、border-top、border-bottom
盒子模型的其他属性
border-radius整合属性
设置圆角边框(圆角半径)
语法: border-radius : val
分类属性:
border-top-left-radius : x [y]
左上角border-top-right-radius : x [y]
右上角border-bottom-right-radius : x [y]
右下角border-bottom-left-radius : x [y]
左下角
注意点:
当使用单位为 % 时, x 相对当前元素
width
进行计算, y 相对当前元素height
进行计算只设一个值, 表示水平和垂直半径值一样(非计算值)
border-radius
整合属性实际是同时设置4个角的圆角半径, 效果如下- 水平和垂直半径值一样
border-radius : 35px; /* 等同于 */ border-top-left-radius : 35px; border-top-right-radius : 35px; border-bottom-right-radius : 35px; border-bottom-left-radius : 35px;
border-radius : 35px 25px; /* 等同于 */ border-top-left-radius : 35px; border-top-right-radius : 25px; border-bottom-right-radius : 35px; border-bottom-left-radius : 25px;
border-radius : 35px 25px 15px; /* 等同于 */ border-top-left-radius : 35px; border-top-right-radius : 25px; border-bottom-right-radius : 15px; border-bottom-left-radius : 25px;
border-radius : 35px 25px 15px 5px; /* 等同于 */ border-top-left-radius : 35px; border-top-right-radius : 25px; border-bottom-right-radius : 15px; border-bottom-left-radius : 5px;
- 水平和垂直方向半径不一样, 设置垂直方向半径, 与水平方向半径赋值效果一样, 最终效果如下
border-radius : 35px 25px 15px 5px / 5px 15px 25px 35px; /* 等同于 */ border-top-left-radius : 35px 5px; border-top-right-radius : 25px 15px; border-bottom-right-radius : 15px 25px; border-bottom-left-radius : 5px 35px;
outline整合属性
在盒子模型(边框外)设置轮廓
语法: outline : width style color
注意点: outline
整合属性和 border
整合属性用法一样
分类属性:
outline-width
用法与border-width
一样outline-style
用法与border-style
一样outline-color
用法与border-color
一样outline-offset : 数值 + 单位
设置轮廓与边框的偏移, 支持负值
outline
(轮廓) 与 border
(边框) 的区别:
轮廓不占用实际空间, 即不会影响页面布局
边框可以通过
border-radius
属性设置圆角(可以为圆形), 轮廓只能是直角轮廓不能单独设置某一边的属性(没有按方向细分的分类属性)
对于行内级元素, 文本(一定行高内)换行时, 轮廓是连续的, 边框则不连续
box-shadow属性
给盒模型(边框)设置阴影
语法: box-shadow: x y [blur [spread]] [color] [inset]
注意点:
- 必须值: x — 水平位置 y — 垂直位置, 均支持负值
- 可选值: blur — 阴影距离, 仅正值, 值越大越模糊, 默认为0
- 可选值: spread — 阴影尺寸, 支持负值, 需要设置在 blur 后面(即blur需占位), 默认为
border-box
的宽高 - 可选值: color — 阴影颜色, 默认跟随当前元素前景色(color)
- 可选值: inset — 设为内部阴影, 默认为 (outset) 外部阴影
- 需要按顺序设置, color 可放在最前或者最后
- 可添加多个阴影, 阴影列表用 ( , ) 逗号隔开
- 阴影不占实际空间, 即不会影响页面布局
min-width 和 min-height
设置元素的最小宽高, 一般配合width : 数值 + 计算单位
使用
语法: min-width : val
、min-height : val
max-width 和 max-height
设置元素的最大宽度, 一般配合width : 数值 + 计算单位
使用
语法: max-width : val
、max-height : val