当前位置:首页 > 编程技术 > 正文内容

玩转 CSS Flexbox 弹性布局

yc8882年前 (2022-12-08)编程技术280

1. 创建 flex 容器


给任何一个元素添加 display: flex; 就可以创建一个 flex 块级容器

属性 描述
display: flex; 创建 flex 块级容器
display: inline-flex; 创建 flex 行内容器
  1. <style>
  2. .container {
  3. background-color: #abcdef;
  4. width: 100px;
  5. height: 100px;
  6. display: flex;
  7. }
  8. .item {
  9. width: 150px;
  10. height: 50px;
  11. background-color: pink;
  12. }
  13. </style>
  14. <div class="container">
  15. <div class="item">1</div>
  16. <div class="item">2</div>
  17. </div>
  18. <span class="container">
  19. <div class="item">1</div>
  20. <div class="item">2</div>
  21. </span>

通过上面代码可以得出两个结论

1. 无论元素是什么类型,只要设置了 display: flex;,该元素就会被设置为 flex 块级元素。span 上行内元素,不能设置宽高,因为被设置为了 flex 容器,所以上面代码中 span 元素也能被设置宽高
2. 子元素在主轴方向上排列时,如果超出了容器的宽度,会忽略自身的宽度,自适应容器宽度的变化。上面代码中子元素宽度被设定为 150px,但是实际展示的是 50px

2. 主轴方向与多行容器


设置容器的主轴方向和多行容器

属性 描述
flex-direction 设置主轴方向
flex-wrap 设置多行容器
flex-flow flex-direction 和 flex-wrap 的缩写

flex-direction 属性值

属性值 描述
row 主轴为水平方向(从左到右),默认值
row-reverse 主轴为水平方向(从右到左)
column 主轴为垂直方向(从上到下)
column-reverse 主轴为垂直方向(从下到上)

flex-wrap 属性值

属性值 描述
nowrap 不换行,项目宽度超出容器宽度时会忽略项目尺寸,默认值
wrap 允许换行,项目宽度超出容器宽度时自动换行

flex-flow 属性值

  1. flex-flow: 主轴方向 多行容器(是否换行);
属性值 描述
flex-flow: row nowrap; 主轴为水平方向且不换行,默认值
flex-flow: row wrap; 主轴为水平方向且允许换行
flex-flow: column nowrap; 主轴为垂直方向且不换行
flex-flow: column wrap; 主轴为垂直方向且允许换行

3. 主轴项目对齐方式


只有一个属性: justify-content,常用属性值如下表

属性值 描述
flex-start 所有项目与主轴起始线对齐【默认值】
flex-end 所有项目与主轴终止线对齐
center 居中对齐: 所有项目与主轴中间线对齐
space-between 两端对齐: 剩余空间在头尾项目之外的项目间平均分配
space-around 分散对齐: 剩余空间在每个项目两侧平均分配
space-evenly 平均对齐: 剩余空间在每个项目之间平均分配

4. 交叉轴项目对齐方式


只有一个属性: align-items,常用属性值如下表

属性值 描述
flex-start 所有项目与交叉轴起始线对齐【默认值】
flex-end 所有项目与交叉轴终止线对齐
center 居中对齐: 所有项目与交叉轴中间线对齐

特别注意: 单行容器中,交叉轴中只有一行项目,所有剩余空间不需要在项目间进行分配,因此没有像主轴对齐的三个属性值: space-between, space-around,space-evenly

5. 多行容器项目对齐方式


只有一个属性: align-content,常用属性值如下表

属性值 描述
stretch 项目拉伸占据整个交叉轴【默认值】
flex-start 所有项目与交叉轴起始线对齐
flex-end 所有项目与交叉轴终止线对齐
center 居中对齐: 所有项目与交叉轴中间线对齐
space-between 两端对齐: 剩余空间在头尾项目之外的项目间平均分配
space-around 分散对齐: 剩余空间在每个项目两侧平均对齐
space-evenly 平均对齐: 剩余空间在每个项目之间平均分配

6. 单个项目在交叉轴上的的对齐方式


只有一个属性: align-self,常用属性值如下表

属性值 描述
auto 继承 align-items 属性值【默认值】
flex-start 与交叉轴起始线对齐
flex-end 与交叉轴终止线对齐
center 与交叉轴中间线对齐
stretch 在交叉轴方向上拉伸
baseline 与基线对齐(用的极少)

7. 单个项目的排列顺序


order 属性

属性值 描述
0 按照书写顺序排列【默认值】
n 值越大,越靠后显示(值可正可负)

8. 项目在主轴上的放大因子


flex-grow 属性

在主轴上存在剩余空间时,该属性才有意义。该属性的值称为放大因子,常见的属性值如下:

属性值 描述
0 不放大,保持原值【默认值】
n 放大因子(正整数)

9. 项目在主轴上的缩小因子


flex-shrink 属性

在主轴上空间容纳不下所有项目时,flex-shrink 才有意意义,该属性的值称为缩小因子,常见的属性值如下:

属性值 描述
1 允许缩小适应主轴空间变化【默认值】
0 不缩小,保持原始大小
n 缩小因子,正整数

10. 项目在主轴上的计算基准尺寸


flex-basis 属性

1. 在分配多余空间之前,项目占据的主轴空间
2. 浏览器根据这个属性,计算主轴是否有多余空间
3. 该属性会覆盖项目原始大小(width/height
4. 该属性会被项目的 min-width,min-height 值覆盖

  1. 优先级: width/height < flex-basis < min-width/min-height
属性值 描述
auto 项目原来的大小【默认值】
px 像素
% 百分比

11. 项目缩放的简写


项目放大,缩小与计算尺寸,对于项目非常重要,也很常用。每次都要写这三个属性,非常的麻烦,且没有必要,flex 属性可以将上面三个属性简化,语法格式:

  1. flex: flex-grow flex-shrink flex-basis;

三值语法:

属性值 描述
第一个值:整数 flex-grow
第二个值:整数 flex-shrink
第三个值:有效宽度 flex-basis

举例

案例 描述
flex: 0 1 auto; 不放大,可收缩,初始宽度【默认值】
flex: 1 1 auto; 项目自动放大或收缩适应容器
flex: 0 0 100px; 按计算大小填充到容器中

双值语法:

属性值 描述
第一个值:整数 flex-grow
第二个值:有效宽度 flex-basis

举例

案例 描述
flex: 0 100px; 禁止放大,按计算大小填充到容器中

单值语法:

属性值 描述
整数 flex-grow
有效宽度 flex-basis
关键字 initial,auto,none

举例

案例 描述
flex: 1 flex: 1 1 auto
flex: 180px flex: 1 1 180px
initial flex: 0 1 auto 【默认值】
auto flex: 1 1 auto
none flex: 0 0 auto

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10190.html

标签: CSS
分享给朋友:

“玩转 CSS Flexbox 弹性布局” 的相关文章

【说站】laravel实现自定义404页面并给页面传值

【说站】laravel实现自定义404页面并给页面传值

以 laravel5.8 为例,虽然有自带的404页面,但太简单,我们更希望能自定义404页面,将用户留在站点。实现的方式很简单,将自定义的视图文件命名为 404.blade.php,并放到 reso...

【说站】Thymeleaf报错Error resolving template “XXX”

【说站】Thymeleaf报错Error resolving template “XXX”

修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

这篇文章主要介绍了详解Centos8 配置静态IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来学习一下!1. 查看自己的网关地址点击虚...

【说站】利用Webhook实现Java项目自动化部署

【说站】利用Webhook实现Java项目自动化部署

用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...