flex 容器的四个属性:
序号 | 属性 | 描述 |
---|---|---|
1 | flex-flow | 主轴方向与换行方式 |
2 | justify-content | 项目在主轴上的对齐方式 |
3 | align-items | 项目在交叉轴上的对齐方式 |
4 | align-content | 项目在多行容器中的对齐方式 |
flex-flow 主轴方向与换行方式
<!DOCTYPE html>
<html lang="zh_CN">
<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>弹性项目在主轴上的排列方式</title>
<style>
* {
box-sizing: border-box;
}
:root {
/* 为了布局,方便后面使用rem计算 */
font-size: 10px;
}
body {
font-size: 1.6rem;
}
.container {
/* 转为flex布局,这个元素就叫flex容器,弹性容器 */
display: flex;
height: 25rem;
border: 1px solid;
}
/* 项目样式:必须是flex容器的子元素 */
/* flex容器中的子元素自动成flex容器的项目,并且是行内块显示,项目自动和当前容器等高 */
.container > .item {
/* padding: 2rem; */
background-color: cornflowerblue;
border: 1px solid;
width: 12rem;
height: 5rem;
}
/* 1.单行容器 */
.container {
/* 主轴方向:默认水平,行 */
/* flex-direction: row; */
/* 禁止换行 */
/* flex-wrap: nowrap; */
/* 简化 */
/* flex-flow: 主轴方向 是否换行; */
flex-flow: row nowrap;
}
/* 2.多行容器 */
.container {
/* 允许换行 */
/* flex-flow: row wrap; */
/* 主轴垂直 */
/* flex-flow: column nowrap; */
/* flex-flow: column wrap; */
}
</style>
</head>
<body>
<div class="container">
<div class="item">item1</div>
<div class="item">item2</div>
<div class="item">item3</div>
<div class="item">item4</div>
<div class="item">item5</div>
<div class="item">item6</div>
<div class="item">item7</div>
</div>
</body>
</html>
justify-content 项目在主轴上的对齐方式
<!DOCTYPE html>
<html lang="zh_CN">
<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>弹性项目在主轴上的排列方式</title>
<style>
* {
box-sizing: border-box;
}
:root {
/* 为了布局,方便后面使用rem计算 */
font-size: 10px;
}
body {
font-size: 1.6rem;
}
.container {
/* 转为flex布局,这个元素就叫flex容器,弹性容器 */
display: flex;
height: 25rem;
border: 1px solid;
}
/* 项目样式:必须是flex容器的子元素 */
.container > .item {
background-color: cornflowerblue;
border: 1px solid;
width: 12rem;
height: 5rem;
}
/* 设置项目在主轴的对齐方式的前提是:主轴上存在剩余空间 */
.container {
/* 项目在主轴上的对齐方式:justify-content */
/* 1.将所有项目看成一个整体来处理 */
justify-content: flex-start;
justify-content: flex-end;
justify-content: center;
/* 2.将所有项目看成一个个独立的个体来处理 */
/* 两端对齐 */
justify-content: space-between;
/* 分散对齐 */
justify-content: space-around;
/* 平均对齐 */
justify-content: space-evenly;
}
/* justify-content:项目在主轴上的对齐方式 */
</style>
</head>
<body>
<div class="container">
<div class="item">item1</div>
<div class="item">item2</div>
<div class="item">item3</div>
<div class="item">item4</div>
</div>
</body>
</html>
align-items 项目在交叉轴上的对齐方式
<!DOCTYPE html>
<html lang="zh_CN">
<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>弹性项目在交叉轴上的排列方式</title>
<style>
* {
box-sizing: border-box;
}
:root {
/* 为了布局,方便后面使用rem计算 */
font-size: 10px;
}
body {
font-size: 1.6rem;
}
.container {
/* 转为flex布局,这个元素就叫flex容器,弹性容器 */
display: flex;
height: 25rem;
border: 1px solid;
}
/* 项目样式:必须是flex容器的子元素 */
.container > .item {
background-color: cornflowerblue;
border: 1px solid;
width: 12rem;
height: 5rem;
}
/* 项目在交叉轴上的对齐方式:align-items */
.container {
align-items: stretch;
align-items: flex-start;
align-items: flex-end;
align-items: center;
}
/* align-items:项目在交叉轴上的对齐方式 */
</style>
</head>
<body>
<div class="container">
<div class="item">item1</div>
<div class="item">item2</div>
<div class="item">item3</div>
<div class="item">item4</div>
</div>
</body>
</html>
align-content 项目在多行容器中的对齐方式
<!DOCTYPE html>
<html lang="zh_CN">
<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>弹性项目在多行容器中主轴上的对齐方式</title>
<style>
* {
box-sizing: border-box;
}
:root {
/* 为了布局,方便后面使用rem计算 */
font-size: 10px;
}
body {
font-size: 1.6rem;
}
.container {
/* 转为flex布局,这个元素就叫flex容器,弹性容器 */
display: flex;
height: 25rem;
border: 1px solid;
}
/* 项目样式:必须是flex容器的子元素 */
.container > .item {
background-color: cornflowerblue;
border: 1px solid;
width: 12rem;
height: 5rem;
}
/* 转为多行容器 */
.container {
flex-flow: row wrap;
/* 多行容器中对齐时,主轴是没有剩余空间 */
/* 换行后,需要设置对齐方式,要求交叉轴上必须要有剩余空间 */
align-content: stretch;
/* 将交叉轴上所有项目看成一个整体 */
align-content: flex-start;
align-content: flex-end;
align-content: center;
/* 看成个体 */
/* 两端对齐 */
align-content: space-between;
/* 分散对齐 */
align-content: space-around;
/* 平均对齐 */
align-content: space-evenly;
}
</style>
</head>
<body>
<div class="container">
<div class="item">item1</div>
<div class="item">item2</div>
<div class="item">item3</div>
<div class="item">item4</div>
<div class="item">item5</div>
<div class="item">item6</div>
<div class="item">item7</div>
<div class="item">item8</div>
<div class="item">item9</div>
<div class="item">item10</div>
<div class="item">item11</div>
</div>
</body>
</html>