盒子模型和标签的标准流
页面中的每一个标签,都可以看做事一个盒子
浏览器在渲染(显示)网页时,会将网页中的元素看做是一个个的矩形区域,所以称之为盒子
盒子模型的组成
CSS中的盒子分别由:内容区域(
content
)、内边距区域(padding
)、边框区域(border
)、外边距(margin
)构成
内容区域宽度和高度
/*
width和height属性值,如果不设置的话,默认是盒子的宽度和高度
取值:数字+px
*/
border(边框)的使用方法
/*
属性名:border
属性值:单个取值的连携,取值之间以空格隔开
如:border:10px solid red:
快捷键:bd+tab
*/
border单方向设置
/*
场景:只给盒子的某个方向单独设置边框
属性名:border-方位名词(left/right/top/botton)
*/
边框属性(几乎用不到)
作用 | 属性名 | 属性值 |
---|---|---|
边框粗细 | border-width |
数字+px |
边框样式 | border-style |
实线solid 、虚线dashed 、点线dotted |
边框颜色 | border-color |
内边距(padding)
顺时针方向去记:上、下、左、右
<style>
div {
width: 300px;
height: 300px;
background-color: pink;
padding: 50px;
/*
padding 属性可以当作复合属性使用,表示单独设置某个方向的内边距
padding 最多取4个值
四值:上、右、下、左(顺时针)
pingding: 10px 20px 30px 40px;
三值:上、左右、下
padding: 10px 40px 80px;
两值:上下 左右
padding:10px 80px;
*/
}
</style>
盒子内减(内减模式)
border 和 padding都会撑大盒子的
/*
手动内减:自己计算多余大小,手动在内容中减去
自动内减:
给盒子设置属性 box-sizing: border-box
浏览器自动化计算多余代下,自动在内容中减去
*/
外边距
margin和padding的属性值设置方法是一样的,只不过margin不会撑大盒子
清除标签默认样式
即:清除内边距和外边距
/*
场景:浏览器会默认给部分标签设置默认的margin和padding,一般项目开始前会先清除这些标签自带的margin和padding,后续自己设置
比如:
body标签默认由margin: 8px
p标签默认有上下的margin
ul标签默认由上下的margin和padding-left
*/
<style>
* {
margin: 0;
padding: 0;
}
</style>
版心居中
版心居中:一般都是指水平居中,即设置外边距0 auto
版心:即网页的有效内容
外边距合并现象
这里所说的合并通常:是指两个块标签做垂直布局的时候,即两个块级标签同时设置上边距和下边距
上下的margin会合并,此时会取两者的最大值,如上面的块级标签设置了
margin-bottom:60px
、下面的标签设置了margin-top:40px
则此时两者的边边距会取最大值60px
<!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>
.big_box {
/*
现象:
垂直布局的块级元素,上下的margin会合并
导致最终两者的距离为margin的最大值,即取这个案例的最大值60px
解决方法:
垂直居中的两个块级标签,只给其中一个盒子设置margin即可
*/
margin-bottom: 60px;
width: 300px;
height: 300px;
background-color: pink;
}
.small_box {
margin-top: 50px;
width: 100px;
height: 100px;
background-color: aqua;
}
</style>
</head>
<body>
<div class="big_box"></div>
<div class="small_box"></div>
</body>
</html>
外边距折叠现象(塌陷现象)
塌陷现象:父子级嵌套标签,子级标签想往下挪,导致把父标签的位置挪下来了
给父元素设置overflow: hidden
父子级标签,都是块级的标签;此时子级加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>
.big_box {
width: 300px;
height: 300px;
background-color: pink;
}
.small_box {
width: 100px;
height: 100px;
background-color: aqua;
/*此时给子标签设置*/
margin-top: 50px;
}
</style>
</head>
<body>
<div class="big_box">
<div class="small_box"></div>
</div>
</body>
</html>
外边折叠解决放法
/*
1.给父元素设置overflow: hidden
2.转成行内块元素
3.设置浮动
*/
行内元素垂直的内、外边距问题
即:如果想要通过
margin
和padding
改变行内标签的垂直位置,无法生效,只会改变水平方向的margin
或者padding
<body>
<!--行内标签的margin-top和margin-bottom不生效-->
<!-- 行内标签的padding-top和padding-bottom不生效 -->
<span>span标签</span>
</body>
标签的标准流
即:标签的默认排列方式
/*
1.块级标签:从上往下,垂直布局,独占一行
2.行内元素或行内块元素:从左往右,水平布局,空间不够自动折行
*/