3分钟搞定:Flex 布局

焦挺
• 阅读 1253

flex 布局原理

全称 flexible box,弹性布局。

如何开启:为元素添加 display: flex

开启 flex 布局的元素,称为 flex 容器(flex container),其子元素成为容器成员,称为 flex 项目。

flex 布局原理:通过给父盒子添加 display: flex,来控制盒子的位置和排列方式。

flex 布局父盒子常见属性

flex-direction

设置主轴方向

属性值含义
row默认值,从左到右
row-reverse从右到左
column从上到下
column-reverse从下到上

justify-content

设置主轴子元素排列方式

属性值含义
flex-start默认值,从头开始
flex-end从尾部开始
center居中
space-around平分剩余空间
space-between两侧子元素贴边,再平分剩余空间

flex-wrap

设置子元素是否换行

默认不换行,若子盒子宽度和大于父盒子,则会收缩!

属性值含义
wrap换行
nowrap默认值,不换行

align-items

设置子元素在侧轴上的排列方式(子元素单行)

属性值含义
flex-start侧轴头部开始
flex-end侧轴尾部开始
center侧轴居中
stretch默认值,拉伸(拉满整个侧轴),若子元素设置了高度则失效

align-content

设置子元素在侧轴上的排列方式(子元素多行)

属性值含义
flex-start默认值,侧轴头部开始
flex-end侧轴尾部开始
center侧轴居中
stretch子元素高度平分父元素高度(需要子元素没有设置高度)
space-around平分侧轴空间
space-between侧轴两侧贴边再平分剩余空间

flex-flow

flex-directionflex-wrap 属性的复合写法

son {
  flex-flow: row wrap;
}

flex 布局子盒子常见属性

flex

flex 属性其实是 flex-growflex-shrinkflex-basis 三个属性的简写。

flex-grow 属性值为一个数字,用于设置弹性盒子的扩展比例,即盒子占剩余空间的份数,默认为 0。常见的 flex: 1flex-grow 为 1。

flex-shrink 属性值为一个数字,用于设置盒子的收缩比例,当子盒子的宽度之和大于父盒子时才会收缩。

flex-basis 用于设置子盒子的初始长度。

span {
  flex: 1;
}

.son {
  flex: 0 0 33.33%;
}

align-self

单独设置某个子盒子在侧轴的排列方式,它会覆盖 align-items 属性。默认值为 auto,表示继承父盒子的 align-items 属性,其余属性值与 align-items 相同。

order

定义子盒子在主轴上的排列顺序。默认值为 0,值越小越靠前,可以为负数。

.son {
  order: -3;
}
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Alex799 Alex799
4年前
Vue进阶(幺柒幺):前端用户体验提升(五)Flex实现弹性布局
需求背景在实现组件拖拽设计过程中,发现组件样式中设置了display:flex属性信息,导致组件生成后无法实现拖拽效果,网上查阅资料后发现Flex布局大有天地。Flex来源
菜园前端 菜园前端
2年前
想学会flex布局,我强烈推荐你来看看这篇文章!!
原文链接:为什么要使用flex布局?flex布局是目前比较流行的一种布局,因为它十分简单灵活,区区简单几行代码就可以实现各种页面的的布局,以前我在学习页面布局的时候我深受其float、display、position这些属性的困扰。使用flex属性就可以写
浩浩 浩浩
4年前
【Flutter实战】线性布局(Row、Column)
4.2线性布局(Row和Column)所谓线性布局,即指沿水平或垂直方向排布子组件。Flutter中通过Row和Column来实现线性布局,类似于Android中的LinearLayout控件。Row和Column都继承自Flex,我们将在弹性布局一节中详细介绍Flex。主轴和纵轴对于线性布局,有主轴和纵轴之分,如果
Wesley13 Wesley13
3年前
使用伸缩盒布局创建一个三列布局每一列占用`col
\使用伸缩盒布局创建一个三列布局每一列占用\col{n}\/12份基于父级容器的宽度\Answer设置\.row\类的父级容器为\display:flex;\样式然后使用\flex\缩写形式属性给每一列子元素设置一个\flexgrow\值使得每一列可以按照设置的比例自动协调宽度
Stella981 Stella981
3年前
Grid布局和Flex布局
Flex布局(弹性布局)Flex是弹性布局,用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为Flex布局。行内元素也可以使用Flex布局。采用Flex布局的元素,称为Flex容器。flexitem项目是Flex布局的元素,简称项目。容器:水平的主轴(mainaxis)和垂直的交叉轴(crossaxis),单个项目占据的主轴空间叫做m
达里尔 达里尔
1年前
Flex布局:flex-grow:1失效
工作中遇到一些flexgrow:1的容器失效,一堆文字乱码溢出,最后看了一下flex布局的原理解决了cssdivflexgrow:1;wisth:0;如果遇到另一边的div设了宽但是被flexgrow:1的内容挤压了,可以给设了宽的div加flexshri
达里尔 达里尔
1年前
flex布局每行最后一个元素去掉右边距
css.item:not(:nthchild(even)):lastchildmarginright:0;