复习随记——关于Flex

关于Flex布局的一些理解
——其实个人认为CSS这一块最起码先把对应的“公式”先记熟

1.简介
布局的传统解决方案是基于盒子模型(content+padding+border+margin),依赖于display+position+float来实现,灵活性比较差。而且在网页布局还未进入CSS的时代,排版几乎都是通过table元素来实现,因为在table的单元格里面我们可以使用align、vailgn来实现水平和垂直方向的对齐(现在几乎不用table布局,因为其性能较差,需等待数据加载完成才能进行显示)。顾此,在2009年W3C提出了Flex布局,即译为弹性布局。下面先从基本概念上进行了解。
2.基本概念
使用flex布局首先要设置父容器 display : flex ,然后再设置 justify-content : center,实现水平居中,最后再设置 align-items : center 实现垂直居中。
在这里插入图片描述
就是这么简单就实现了垂直、水平居中!!!emm…但是,justify-content 和 align-items 到底是什么呢?哪里可以看出横向和纵向的区别?接下来就进行深度的了解吧~
在这里插入图片描述
其实flex也不难,其核心概念就是 容器 和 轴 。容器则包括外层的 父容器 和内层的 子容器,轴包括 X轴(主轴) 和 Y轴(交叉轴),可以说flex的全部特性都构建在这两个概念上面。flex布局涉及到12个属性,其中父容器、子容器各6个。不过常用的只有4个,父容器和子容器各2个,那么我们就先从常用的说起吧。
3.容器
——容器具有这样的特点:父容器可以同一设置子容器的排列方式,子容器也可以设置自身的排列方式,但是两者同时设置的时候,则以子容器为标准。
在这里插入图片描述

3.1父容器
设置子容器沿X轴排列:justify-content
justify-content 属性用于定义如何沿着X轴方向排列子容器
在这里插入图片描述
flex-start: 起始端对齐
在这里插入图片描述
flex-end:末尾端对齐
在这里插入图片描述
center: 居中对齐
在这里插入图片描述
space-around: 子容器沿X轴均匀分布,位于首尾两端的子容器到父容器的距离是子容器间距的一半
在这里插入图片描述
space-between: 子容器沿主轴均匀分布,位于首尾两端的子容器与父容器相切
在这里插入图片描述

设置子容器沿Y轴排列:align-items
align-items 用来定义如何沿着Y轴方向分配子容器的间距
在这里插入图片描述
flex-start:起始端对齐
在这里插入图片描述
flex-end:末尾段对齐
在这里插入图片描述
center:居中对齐
在这里插入图片描述
baseline: 基线对齐, 这里的 baseline 默认是指首行文字,即 first-baseline ,所有子容器向基线对齐,Y轴起点到元素基线的最大距离的子容器将会与Y轴相切以确定基线。
在这里插入图片描述
stretch: 子容器Y轴的尺寸拉伸至与父容器一致。
在这里插入图片描述

3.2子容器
在主轴上如何伸缩:flex
在这里插入图片描述
子容器是由弹性的(flex既弹性),他们回自动填补剩余空间,子容器的伸缩比例由 flex 属性去进行确定。
flex 的值可以是无单位的数字(例如:1,2,3),也可以是有单位的数字(例如:15px,30px,60px),还可以是none关键字。子容器会按照flex的尺寸比例自动伸缩,如果取值为none就不伸缩。
熟练 flex 是多个属性的缩写,允许 1-3 个值连用,但通常用1个值就可以满足需求啦,它的全部写法可以参考下图。
在这里插入图片描述
单独设置子容器如何沿Y轴排列:align-self
在这里插入图片描述
每个子容器都可以单独定义沿Y轴排列的方式,此属性的可选值与父容器 aligh-items 属性完全一致,如果两者同时设置时,则以子容器 align-self属性为准。

4.轴
如图所示,轴 包含 主轴 和 交叉轴,我们知道 justify-content 属性决定子容器沿主轴的排列方式, align-items 属性决定子容器沿着Y轴的排列方式。那么轴又是如何确定的呢?在flex布局中,flex-direction 属性决定主轴的方向,交叉轴的方向由主轴确定。
在这里插入图片描述
主轴
主轴的起始端由 flex-start 来表示,末端由flex-end来表示。不同的主轴方向对应的起始端和末尾端的位置也不同。
在这里插入图片描述
向右: flex-direction:row
在这里插入图片描述
向下: flex-direction:column
在这里插入图片描述
向左:flex-direction:row-reverse
在这里插入图片描述
向上:flex-direction:column-reverse

交叉轴
主轴沿逆时针方向旋转90度就得到了交叉轴,交叉轴的起始端和末尾端也由 flex-start 和 flex-end来表示。
上面介绍的几项属性是flex布局中最常用的部分,一般来说可以满足大多需求,如果实现复杂的布局还需要深入了解更多的属性。

Flex进阶概念
1.父容器
设置换行方式:flex-wrap
决定子容器是否换行排列,不但可以顺序换行而且支持逆序换行

nowrap:不换行

wrap:换行

wrap-reverse:逆序换行
逆序换行是指沿着交叉轴的反方向换行。

轴向与换行组合设置:flex-flow
flow 即流向,也就是子容器沿着哪个方向流动,流动到终点是否允许换行,比如 flex-flow: row wrap,flex-flow 是一个复合属性,相当于 flex-direction 与 flex-wrap 的组合,可选的取值如下:

	* 

row、column 等,可单独设置主轴方向
*
wrap、nowrap 等,可单独设置换行方式
*
row nowrap、column wrap 等,也可两者同时设置

多行沿交叉轴对齐:align-content
当子容器多行排列时,设置行与行之间的对齐方式。

flex-start:起始端对齐

flex-end:末尾段对齐

center:居中对齐

space-around:等边距均匀分布

space-between:等间距均匀分布

stretch:拉伸对齐
2. 子容器
*
设置基准大小:flex-basis
flex-basis 表示在不伸缩的情况下子容器的原始尺寸。主轴为横向时代表宽度,主轴为纵向时代表高度。

* 

设置扩展比例:flex-grow
子容器弹性伸展的比例。如图,剩余空间按 1:2 的比例分配给子容器。

* 

设置收缩比例:flex-shrink
子容器弹性收缩的比例。如图,超出的部分按 1:2 的比例从给子容器中减去。

* 

设置排列顺序:order
改变子容器的排列顺序,覆盖 HTML 代码中的顺序,默认值为 0,可以为负值,数值越小排列越靠前。

以上就是 flex 布局的全部属性,一共 12 个,父容器、子容器各 6 个,可以随时通过下图进行回顾。

本文参考自:https://juejin.im/post/58e3a5a0a0bb9f0069fc16bb#heading-4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值