Flex布局

一、Flex布局是什么?

Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。
任何一个容器都可以指定为Flex布局。

二、基本概念

采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”。
在这里插入图片描述
容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

三、容器的属性及描述

以下6个属性设置在容器上。

flex-direction

flex-wrap

flex-flow

justify-content

align-items

align-content

3.1 flex-direction属性
flex-direction属性决定主轴的方向(即项目的排列方向)。
.box{flex-direction:row|row-reverse|column|column-reverse;}
在这里插入图片描述
它可能有4个值。

row(默认值):主轴为水平方向,起点在左端。

row-reverse:主轴为水平方向,起点在右端。

column:主轴为垂直方向,起点在上沿。

column-reverse:主轴为垂直方向,起点在下沿。

3.2 flex-wrap属性
默认情况下,项目都排在一条线(又称”轴线”)上。
在这里插入图片描述

## flex-wrap属性定义,如果一条轴线排不下,如何换行?
可能取三个值:

nowrap(默认) : 不换行
wrap(换行) : 换行,第一行在上方
wrap-reverse: 换行,第一行在下方

3.3 flex-flow
flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。

3.4 justify-content属性

有五个值:

flex-start
flex-end center
space-between
space-around

五个值得用法 :

flex-start(默认值):左对齐

flex-end:右对齐

center: 居中

space-between:两端对齐,项目之间的间隔都相等。

space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

3.5 align-items属性

align-items属性定义项目在交叉轴上如何对齐。

flex-start:交叉轴的起点对齐。

flex-end:交叉轴的终点对齐。

center:交叉轴的中点对齐。

baseline: 项目的第一行文字的基线对齐。

stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

3.6 align-content属性
align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

在这里插入图片描述

该属性有6个值 :

flex-start:与交叉轴的起点对齐。

flex-end:与交叉轴的终点对齐。

center:与交叉轴的中点对齐。

space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。

space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。

stretch(默认值):轴线占满整个交叉轴。

四.项目的属性

以下6个属性设置在项目上

1.order
2.flex-grow
3.flex-shrink
4.flex-basis
5.flex
6.align-self

【order】
order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

【flex-grow】
flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

【flex属性】
flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。
该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

五.Flex 的使用方法

跟常规布局操作一样,flex也是基于css属性的设置来实现。

(1)父容器的属性
1.display:flex | inline-flex;(适用于父容器)
这个是用来定义伸缩容器,是内联还是块取决于设置的值。这个时候,他的所有子元素将变成flex文档流,称为伸缩项目。

display: other values | flex | inline-flex;

如果是Webkit内核的浏览器,必须加上-webkit前缀。比如:

display: -webkit-flex;

但有两点要注意的是,父容器设置flex之后:

CSS的columns在伸缩容器上没有效果。 float、clear和vertical-align在子项目上没有效果。

2.flex-direction(适用于父容器)

flex-direction属性决定主轴的方向(即项目的排列方向)。 flex-direction: row | row-reverse |
column | column-reverse
row(默认值):在“ltr”排版方式下从左向右排列;在“rtl”排版方式下从右向左排列。
row-reverse:与row排列方向相反,在“ltr”排版方式下从右向左排列;在“rtl”排版方式下从左向右排列。 column:类似
于row,不过是从上到下排列 column-reverse:类似于row-reverse,不过是从下到上排列

3.flex-wrap(适用于父容器)

这个主要用来定义伸缩容器里是单行还是多行显示,侧轴的方向决定了新行堆放的方向。

flex-wrap: nowrap | wrap | wrap-reverse
nowrap(默认值):伸缩容器单行显示,“ltr”排版下,伸缩项目从左到右排列;“rtl”排版上伸缩项目从右向左排列。
wrap:伸缩容器多行显示,“ltr”排版下,伸缩项目从左到右排列;“rtl”排版上伸缩项目从右向左排列。
wrap-reverse:伸缩容器多行显示,“ltr”排版下,伸缩项目从右向左排列;“rtl”排版下,伸缩项目从左到右排列。(和wrap相反)

4.flex-flow(适用于父容器)

这个是“flex-direction”和“flex-wrap”属性的缩写版本。同时定义了伸缩容器的主轴和侧轴。其默认值为“row nowrap”。

flex-flow: <‘flex-direction’> || <‘flex-wrap’>

5.justify-content(适用于父容器)
这个是用来定义伸缩项目沿着主轴线的对齐方式。当一行上的所有伸缩项目都不能伸缩或可伸缩但是已经达到其最大长度时,这一属性才会对多余的空间进行分配。当项目溢出某一行时,这一属性也会在项目的对齐上施加一些控制。

justify-content: flex-start | flex-end | center | space-between |
space-around

flex-start(默认值):伸缩项目向一行的起始位置靠齐。

flex-end:伸缩项目向一行的结束位置靠齐。

center:伸缩项目向一行的中间位置靠齐。

space-between:伸缩项目会平均地分布在行里。第一个伸缩项目一行中的最开始位置,最后一个伸缩项目在一行中最终点位置,项目之间的间隔都相等。

space-around:伸缩项目会平均地分布在行里,每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

6.align-items(适用于父容器)

这个主要用来定义伸缩项目可以在伸缩容器的当前行的侧轴上对齐方式。可以把他想像成侧轴(垂直于主轴)的“justify-content”。

align-items: flex-start | flex-end | center | baseline | stretch

flex-start:伸缩项目在侧轴起点边的外边距紧靠住该行在侧轴起始的边。

flex-end:伸缩项目在侧轴终点边的外边距靠住该行在侧轴终点的边 。

**center:**伸缩项目的外边距盒在该行的侧轴上居中放置。

baseline:伸缩项目根据他们的基线对齐。

stretch(默认值):伸缩项目拉伸填充整个伸缩容器。如果项目未设置高度或设为auto,将占满整个容器的高度

7.align-content(适用于父容器)

这个属性主要用来调准伸缩行在伸缩容器里的对齐方式。类似于伸缩项目在主轴上使用“justify-content”一样。

注:请注意本属性在只有一行的伸缩容器上没有效果。

align-content: flex-start | flex-end | center | space-between |
space-around | stretch

flex-start:各行向伸缩容器的起点位置堆叠。

flex-end:各行向伸缩容器的结束位置堆叠。

center:各行向伸缩容器的中间位置堆叠。

space-between:各行在伸缩容器中平均分布。

space-around:各行在伸缩容器中平均分布,在两边各有一半的空间。

stretch(默认值):各行将会伸展以占用剩余的空间。

## (2)子项目的属性

1.order(适用于子项目)
order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

order: <integer>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值