批改状态:合格
老师批语:这个图很经典, 但却搞得有点复杂, 我是不太建议大家看的, 只要记住项目必须没主轴排列,且默认可自动收缩就可以了
Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。
可以将任一元素添加display:flex属性转为 flex 容器
允许应用到 flex 容器上的 6 个属性
| 序号 | 描述 | 属性/值 |
|---|---|---|
| 1 | 方向 | flex-direction:row/column/row-reverse/column-reverse |
| 2 | 换行 | flex-wrap: wrap/nowrap/wrap-reverse |
| 3 | flex-flow 上面 2 个的简写 | flex-flow: flex-direction, flex-wrap |
| 4 | 主轴的对齐方向 | justify-content:center/flex-start/flex-end/space-around/space-between |
| 5 | 侧轴的对齐方向 | align-items:center/flex-end/flex-start/stretch/baseline |
| 6 | 多行列的对齐方向 | align-content |
| 序号 | 描述 | 属性/值 |
|---|---|---|
| 1 | 增长比例 | flex-grow |
| 2 | 缩减比例 | flex-shrink |
| 3 | 默认大小 | flex-basis |
| 4 | 上述三者简写 | flex |
| 5 | 项目顺序 | order |
| 6 | 自身对齐方式 | align-self |
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>FlexBox弹性盒布局快速预览</title><style>/* 弹性盒子,要用火狐浏览器查看 */.container {width: 300px;/* 如果这个容器中的内容要使用flexBox布局, 第一步就是必须将这个容器转为弹性盒子 */display: flex;}.container > .item {/* 一旦将父元素转为弹性容器,内部的“子元素”就会自动成为: 弹性项目 *//* 不管这个项目标签之前是什么类型,统统转为“行内块” *//* 行内:全部在一排显示 *//* 块: 可以设置宽和高 *//* 设置弹性项目空间平分分配,进行平均缩放,如果没有定义,可能会有剩余空间 *//* flex: auto; *//* 设置每个弹性项目宽度和高度 */width: 40px;height: 30px;}</style></head><body><!-- .container>.item{$}*3 --><div class="container"><div class="item">1</div><div class="item">2</div><div class="item">3</div><div class="item">4</div><div class="item">5</div></div></body></html>

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>FlexBox弹性盒多行容器</title><style>.container {width: 300px;/* 弹性容器 */display: flex;}.container > .item {/* 通过改变弹性项目宽度查看换行属性,默认不换行 */width: 60px;width: 120px;width: 150px;}/* 换行显示:flex-wrap:wrap ,转换为多行容器*/.container {flex-wrap: wrap;}</style></head><body><!-- .container>.item{$}*3 --><div class="container"><div class="item">1</div><div class="item">2</div><div class="item">3</div><div class="item">4</div><div class="item">5</div></div></body></html>

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>单行容器中的项目对齐方式</title><style>.container {/* 转为弹性盒 */display: flex;width: 300px;/* 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;}.container > .item {/* 设置每个弹性项目宽度 */width: 60px;}</style></head><body><div class="container"><div class="item">1</div><div class="item">2</div><div class="item">3</div></div></body></html>

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>多行容器中的项目对齐方式</title><style>.container {/* 转为弹性盒 */width: 300px;display: flex;/* 多行容器 */flex-wrap: wrap;height: 150px;/* align-content: 设置多行容器中的项目排列; *//* 1. 容器剩余空间在所有项目“二边”的如何分配 ,将全部项目视为一个整体*//* 默认值 */align-content: stretch;/* 从顶部左侧开始排列 */align-content: flex-start;/* 从底部部右侧开始排列 */align-content: flex-end;/* 居中排列 */align-content: center;/* 2. 容器剩余空间在所有项目“之间”的如何分配 ,将项目视为一个个独立的个体*//* 两端对齐 */align-content: space-between;/* 分散对齐 */align-content: space-around;/* 平均分配对齐 */align-content: space-evenly;}.container > .item {/* 设置每个弹性项目宽度 */width: 60px;}</style></head><body><div class="container"><div class="item">1</div><div class="item">2</div><div class="item">3</div><div class="item">4</div><div class="item">5</div><div class="item">6</div><div class="item">7</div><div class="item">8</div></div></body></html>

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>主轴为垂直方向时的项目排列</title><style>.container {/* 转为弹性盒 */width: 300px;height: 150px;display: flex;/* 主轴方向:默认为行 */flex-direction: row;flex-direction: column;/* 项目二边分配 */justify-content: flex-start;justify-content: flex-end;justify-content: center;/* 项目之间分配 */justify-content: space-between;justify-content: space-around;justify-content: space-evenly;}.container > .item {/* 设置每个弹性项目宽度 *//* width: 60px; */}</style></head><body><div class="container"><div class="item">1</div><div class="item">2</div><div class="item">3</div></div></body></html>

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>项目在交叉轴上的排列</title><style>.container {/* 转为弹性盒 */display: flex;width: 300px;height: 200px;/* 项目在交叉轴上默认是自动伸缩的 *//* 默认值 */align-items: stretch;/* 项目交叉轴排列 */align-items: flex-start;align-items: flex-end;align-items: center;}.container > .item {/* 设置每个弹性项目宽度 */width: 60px;}</style></head><body><div class="container"><div class="item">1</div><div class="item">2</div><div class="item">3</div></div></body></html>

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>主轴方向与项目排列的简写</title><style>.container {/* 转为弹性盒 */display: flex;width: 300px;height: 50px;/* 默认值就不用写出来 *//* 默认对齐方式 *//* flex-direction: row; *//* 禁止换行 *//* flex-wrap: nowrap; *//* 提换上面两行代码简写 *//* flex-flow: row nowrap; *//* 按列排列,可以设置换行和不换行(nowrap/wrap),换行就是多行容器 */flex-flow: column wrap;}.container > .item {/* 设置每个弹性项目宽度 */width: 60px;}</style></head><body><div class="container"><div class="item">1</div><div class="item">2</div><div class="item">3</div><div class="item">4</div><div class="item">5</div></div></body></html>

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>flex容器属性实战:快速撸一个主导航</title><style>* {padding: 0;margin: 0;box-sizing: border-box;}a {text-decoration: none;color: #ccc;}nav {height: 40px;line-height: 40px;background-color: #333;padding: 0 50px;/* 转换为弹性盒布局 */display: flex;}nav a {height: inherit;line-height: 40px;padding: 0px 15px;}nav a:hover {background-color: seagreen;color: white;}/* 登录/注册放在最右边 */nav a:last-of-type {margin-left: auto;}</style></head><body><header><nav><a href="">首页</a><a href="">HTML</a><a href="">CSS</a><a href="">JavaScript</a><a href="">PHP</a><a href="">登录/注册</a></nav></header></body></html>

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号