标准流:也称文档流,指的是标签在页面中默认的排布规则。例如:块元素独占一行,行元素可以一行显示多个。
作用:让块元素水平排列。
属性名:float
| 属性值 | 描述 |
|---|---|
| left | 左对齐 |
| right | 右对齐 |
例如:
<style>
/* 特点:顶对齐,具备行内块显示特点 */
.one {
width: 100px;
height: 100px;
background-color: red;
float: left;
}
.two {
width: 200px;
height: 200px;
background-color: blue;
}
style>
<body>
<div class="one">这是one块级元素div>
<div class="two">这是two块级元素div>
body>
页面效果:

浮动特点
场景:如果父级没有高度,子级使用了浮动,就会脱标,不再占用标准流位置,那么就无法撑开父级高度,那就可能导致页面布局错乱。
例如:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
/* 特点:顶对齐,具备行内块显示特点 */
.one {
width: 300px;
background-color: red;
}
.two {
width: 200px;
height: 200px;
background-color: blue;
float: left;
}
style>
head>
<body>
<div class="one">
这是one块级元素
<div class="two">这是two块级元素div>
div>
body>
html>
页面效果:

解决方法:清除浮动
<style>
.clearfix::after {
content: "";
display: block;
clear:both;
}
style>
<style>
/* 防止外边距塌陷 */
.clearfix::before,
.clearfix::after {
content: "";
display: table;
}
/* 清除浮动效果 */
.clearfix::after {
clear: both;
}
style>
Flex 布局也叫弹性布局,是浏览器提倡的布局模型,非常适合结构化布局,提供了强大的空间分布和对齐能力。Flex 模型不会产生浮动布局中的脱标现象,布局网页更简单、更灵活。
设置方式:给父元素设置display: flex,子元素可以自动挤压或拉伸。
组成部分:
| 属性 | 描述 |
|---|---|
| display: flex | 创建 Flex 容器 |
| justify-content | 主轴对齐方式 |
| align-items | 侧轴对齐方式 |
| align-self | 某个弹性盒子侧轴对齐方式 |
| flex-direction | 修改主轴方向 |
| flex | 弹性伸缩比 |
| flex-wrap | 弹性盒子换行 |
| align-content | 行对齐方式 |
属性名:justify-content
| 属性值 | 描述 |
|---|---|
| flex-start | 默认值,弹性盒子从起点开始依次排列 |
| flex-end | 弹性盒子从终点开始依次排列 |
| center | 弹性盒子沿主轴局中排列 |
| space-between | 弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子之间 |
| space-around | 弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子两侧 |
| space-evenly | 弹性盒子沿主轴均匀排列,弹性盒子与容器之间间距相等 |
例如:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
/* 特点:顶对齐,具备行内块显示特点 */
.one {
height: 600px;
border: 1px black solid;
display: flex;
justify-content: space-evenly;
}
.two {
width: 200px;
height: 200px;
background-color: pink;
float: left;
}
style>
head>
<body>
<div class="one">
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
div>
body>
html>>
页面效果:

属性名:
| 属性值 | 描述 |
|---|---|
| stretch | 弹性盒子沿着轴线被拉伸至铺满容器(弹性盒子没有设置轴线方向尺寸才拉伸) |
| center | 弹性盒子沿侧轴局中排列 |
| flex-start | 弹性盒子从起点开始依次排列 |
| flex-end | 弹性盒子从终点开始依次排列 |
例如:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
/* 特点:顶对齐,具备行内块显示特点 */
.one {
height: 600px;
border: 1px black solid;
display: flex;
justify-content: space-evenly;
align-items: center;
}
.two {
width: 200px;
height: 200px;
background-color: pink;
}
.two:nth-child(3)
{
width: 200px;
height: 200px;
background-color: pink;
align-self: flex-start;
}
style>
head>
<body>
<div class="one">
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
div>
body>
html>>
页面效果:

主轴默认在水平方向,侧轴默认在垂直方向
属性名:flex-direction
| 属性值 | 描述 |
|---|---|
| row | 水平方向,从左向右(默认) |
| column | 垂直方向,从上向下 |
| row-reverse | 水平方向,从右向左 |
| column-reverse | 垂直方向,从下向上 |
注:当我们修改主轴为垂直方向时,侧轴自动变为水平方向
例如:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
/* 特点:顶对齐,具备行内块显示特点 */
.one {
height: 1000px;
border: 1px black solid;
display: flex;
justify-content: space-evenly;
align-items: center;
/* 修改主轴方向为自上向下 */
flex-direction: column;
}
.two {
width: 200px;
height: 200px;
background-color: pink;
border: 1px black solid;
}
.two:nth-child(3)
{
width: 200px;
height: 200px;
background-color: pink;
align-self: flex-start;
}
style>
head>
<body>
<div class="one">
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
div>
body>
html>>
页面效果:

作用:控制弹性盒子的主轴方向尺寸。
属性名:flex
属性值:整数数字,表示占用父级剩余尺寸的份数。
弹性盒子可以自动挤压或拉伸,默认情况下,所有弹性盒子都在一行显示
属性名:flex-wrap
| 属性值 | 描述 |
|---|---|
| wrap | 换行 |
| nowrap | 不换行(默认) |
例如:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
/* 特点:顶对齐,具备行内块显示特点 */
.one {
height: 1000px;
border: 1px black solid;
display: flex;
justify-content: space-evenly;
align-items: center;
/* 换行 */
flex-wrap: wrap;
}
.two {
width: 400px;
height: 400px;
background-color: pink;
border: 1px black solid;
}
style>
head>
<body>
<div class="one">
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
div>
body>
html>>
页面效果:

作用:对多行弹性盒子的行对齐方式进行设置,对单行盒子不起效果
属性名:align-content
| 属性值 | 描述 |
|---|---|
| flex-start | 默认值,弹性盒子从起点开始依次排列 |
| flex-end | 弹性盒子从终点开始依次排列 |
| center | 弹性盒子沿主轴居中排列 |
| space-between | 弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子之间 |
| space-around | 弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子两侧 |
| space-evenly | 弹性盒子沿主轴均匀排列,弹性盒子与容器之间间距相等 |
例如:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
/* 特点:顶对齐,具备行内块显示特点 */
.one {
height: 1000px;
border: 1px black solid;
display: flex;
justify-content: space-evenly;
align-content: end;
flex-wrap: wrap;
}
.two {
width: 300px;
height: 300px;
background-color: pink;
border: 1px black solid;
}
style>
head>
<body>
<div class="one">
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
<div class="two">这是two块级元素div>
div>
body>
html>>
页面效果:

完