盒子模型
一、认识盒子
- 其实盒子在我们生活中随处可见
- 由上面这个图可以看出一个盒子由内容的宽(width)高(height)、内边距(padding)、边框(border)、外边距(margin)组成
二、HTML的每一个元素都是一个盒子
- 其实,我们可以把html的每一个元素都可以看成是一个盒子
三、盒子模型(Box Model)
- HTML的每一个元素都可以看作是一个盒子,可以具备以下4个属性
- 内容(content)
- 元素内容的width/height
- 内边距(padding)
- 元素内容与元素之间空隙
- 边框(border)
- 元素自己的边框
- 外边距(margin)
- 元素与元素之间的距离
四、盒子模型的四边
- 因为盒子有四边,所以padding/border/margin都有left、right、top、bottom四个边
五、在浏览器的开发工具中
六、内容-宽度和高度
-
设置内容是通过宽度和高度设置的:
- 宽度设置:width
- 高度设置:height
-
注意:对应行内非替换元素来说,设置宽度高度无效
-
另外我们还可以设置如下属性:
- min-width:最小宽度,无论内容多少,宽度都大于或等于min-width
- max-width:最大宽度,无论内容多少,宽度都小于或等于max-width
- 移动端适配时, 可以设置最大宽度和最小宽度;
-
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .box { background-color: red; max-width: 750px; min-width: 500px; margin: 0 auto; } </style> </head> <body> <div class="box"> 我是box元素 </div> </body> </html>
-
-
下面两个属性不常用:
- min-height:最小高度,无论内容多少,高度都大于或等于min-height
- max-height:最大高度,无论内容多少,高度都小于或等于max-height
-
-
其实元素宽度的初始值默认是auto(由上图看出)
七、内边距 - padding
-
padding属性用于设置盒子的内边距, 通常用于设置边框和内容之间的间距
-
padding包括四个方向, 所以有如下的取值:
- padding-top:上内边距
- padding-right:右内边距
- padding-bottom:下内边距
- padding-left:左内边距
-
-
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .box { border: 1px solid #000; display: inline-block; /* padding的四个值 */ padding-top: 10px; padding-right: 20px; padding-bottom: 30px; padding-left: 40px; } </style> </head> <body> <div class="box">我是box</div> </body> </html>
-
padding单独编写是一个缩写属性:
- padding-top、padding-right、padding-bottom、padding-left的简写属性
- padding缩写属性是从零点钟方向开始, 沿着顺时针转动的, 也就是上右下左;
-
padding并非必须是四个值, 也可以有其他值;
-
-
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .box { border: 1px solid #000; display: inline-block; /* padding的四个值 */ /* padding-top: 10px; padding-right: 20px; padding-bottom: 30px; padding-left: 40px; */ /* padding三个值 : 省略的left,使用right值*/ /* padding: 10px 20px 30px; */ /* padding二个值 : 省略的left,使用right值,省略bottom,使用top值*/ /* padding: 10px 20px 30px; */ /* padding一个值 : 四边都是相同值*/ padding: 10px; } </style> </head> <body> <div class="box">我是box</div> </body> </html>
-
-
八、边框-border
-
border用于设置盒子的边框
-
边框相对于content/padding/margin来说比较特殊一点
- 边框有宽度:width
- 边框有样式:style
- 边框有颜色:color
-
设置边框的方式
-
边框宽度
- border-top-width 、border-right-width、border-bottom-width、border-left-width
- border-width是上面4个值的简写
-
边框样式
- border-top-style、border-right-style、border-bottom-style、border-left-style
- border-style是上面4个值的简写
-
边框颜色
- border-top-color、border-right-color、border-bottom-color、border-left-color
- border-color是上面4个值的简写
-
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .box { /* width */ /* border-top-width: 10px; border-right-width: 20px; border-bottom-width: 30px; border-left-width: 40px; */ border-width: 10px 20px 30px 40px; /* style */ /* border-top-style: solid; border-right-style: dashed; border-bottom-style: double; border-left-style: groove; */ border-style: solid dashed double groove; /* color */ /* border-top-color: red; border-right-color: blue; border-bottom-color: beige; border-left-color: coral; */ border-color: red blue beige coral; width: 300px; height: 300px; } </style> </head> <body> <div class="box"> </div> </body> </html>
-
效果如下图所示
-
-
-
边框的样式设置值
- 边框样式有很多,我们阔以了解以下几个
- groove:凹槽, 沟槽, 边框看上去好象是雕刻在画布之内
- ridge:山脊, 和grove相反,边框看上去好象是从画布中凸出来
- 边框样式有很多,我们阔以了解以下几个
-
同时设置的方式
- border-width
- border-style
- border-color
- border: 统一设置4个方向的边框
-
样式、颜色、宽度书写顺序随意
- MDN上的书写规则:
-
-
注意:如果边框的样式未定义,它将不可见。 这是因为样式默认为none。
-
- MDN上的书写规则:
九、外边距-margin
-
margin属性用于设置盒子的外边距,通常用于设置元素与元素之间的距离
-
margin包括四个方向,可以取以下四个值:
- margin-top: 上外边距
- margin-right:右外边距
- margin-bottom:下外边距
- margin-left:左外边距
-
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .box { height: 100px; background-color: royalblue; } .content { height: 100px; background-color: red; margin-top: 30px; } </style> </head> <body> <div class="box"></div> <div class="content"></div> </body> </html>
-
-
margin单独编写是一个缩写属性
-
margin-top、margin-right、margin-bottom、margin-left的简写
-
margin缩写属性是从零点开始,按顺时针方向,即上右下左
-
-
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .box { display: inline-block; width: 100px; height: 100px; background-color: royalblue; /* margin-bottom: 30px; */ margin: 0 10px; } .content { display: inline-block; width: 100px; height: 100px; background-color: red; /* margin-top: 30px; */ margin: 0 10px; } </style> </head> <body> <div class="box"></div> <div class="content"></div> </body> </html>
-
margin也并非四个值,也可以有其他的
-
-
margin的其他值
-
MDN语法格式:
-