Flex布局

408 阅读3分钟

概述

flex布局是目前web开发中使用最多的布局方案
flex布局又叫Flexible 布局,或者弹性布局。目前特别在移动端用的最多,目前PC端也使用越来越多了

两个重要的概念

  1. 开启了 flex 布局的元素叫 flex container,
  2. flex container 里面的子元素叫做 flex items

设置 display 属性为 flex 或者 inline-flex 可以成为 flex container
设置display: flex时,container以块的形式存在。而display: inline-flex: flex container以行内元素形式存在。

flex 布局的模型

image.png

flex 布局的css 属性

image.png

这里特别需要注意一点是display:flex 或者display: inline-flex 是应用在flex container 上, 而flex 属性是应用在flexItem上的,表示的是flex-grow,flex-shrink,flex-basis的复合属性。

flex container 的css属性

1.flex-direction(主轴方向)

flex items 默认都是沿主轴方向从 main start 到 main end 方向排布。 而flex-direction 决定了主轴的方向。

默认值是 row(默认值),就是默认主轴是水平方向,从左往右。

image.png

2.flex-wrap (item在主轴上排列,他的换行方式)

默认值是:nowrap,就是说默认是不换行的,挤在一行的。

image.png

flex-flow (因为是复合属性,不加编号)

flex-flow 是flex-direction和flex-wrap的复合属性,而且这俩在写的时候没有顺序要求。 flex-flow: row wrap

3.justify-content(items在主轴的对齐方式)

默认值是 flex-start,默认值是主轴起点对齐。

image.png

image.png

4.1 align-items(items排列是一行的时候在侧轴方向的对齐方式)

image.png 注意默认值是stretch,这个值是代表如果你item的高度没有设置的话,里面的item会在竖直方向被拉伸

image.png

4.2 align-content(items排列是多行的时候在侧轴方向的对齐方式)

image.png flex-start image.png

image.png

image.png

image.png

image.png

flex items 的css属性

1.flex-grow(伸)

默认值是0.默认不拉伸。

image.png

image.png

2.flex-shrink(缩)

默认值是1.默认是要收缩的。

image.png

image.png

3.flex-basis(item的基准长度)

默认值是auto。即item的自身的宽高决定。

image.png

image.png

flex 复合属性(一定注意是设置在item身上的)

默认值是 flex 0 1 auto,可以简写为flex: 0 auto.
注意flex写三个值,第一个值代表的拉伸,第二个值代表压缩,第三个代表设置的基准长度。 基准长度 auto代表取决于item自身的宽高。其中拉伸和压缩的0和1可以代表是否可以拉伸和压缩,1代表可以,0代表不可以。

flex : 1 1 0;可以拉伸,可以压缩,基准长度为0,然后item自身再不设置宽度,就可以代表ios lwzcollectionview item 均分的效果。

image.png

image.png

4.order

可以改变items的排布顺序,比方说我原来是一排三个item,按照添加的顺序从左往右边排,现在我就可以设置第一item的order:1,然后本来应该在第一个位置的item就跑到最后一个位置了。
默认为0

image.png

5.align-self

在是一行可以通过align-items决定他们在侧轴方向的排列方式,但是有时会遇到一个特殊的,调皮的,不想按照统一设定的侧轴的排列方式,就可以通过这个属性去单独设置。

image.png

浏览器对flex布局对我们写代码的辅助

Elements.tiff

flex 布局应用

1.居中

方式一

image.png

方式二

image.png

2.块元素和其他元素排到一排,代替浮动

下图中红色框和黄色框 image.png

3.均分布局

父元素设置 dispaly:flex items(均分的元素) flex : 1 1 0;可以拉伸,基准长度为0.当然items不能设置宽度了。

4.列表布局举例实例(有时要和margin配合使用)

正常flex布局

Pasted Graphic 34.tiff

一个靠边

Pasted Graphic 35.tiff

Pasted Graphic 36.tiff

一个居中,另外一个靠边

Pasted Graphic 38.tiff Pasted Graphic 39.tiff

常用的布局

Pasted Graphic 40.tiff

Pasted Graphic 41.tiff