Flex布局

1、概念

在弹性布局中,有两根轴线:

水平方向的主轴

垂直方向的交叉轴

Flex布局分项目与容器。 容器指的就是弹性盒本身。项目指的是内部的子元素。

2、容器属性

容器属性指的是放在容器选择器样式列表中的属性。

display: flex;

拥有该属性的元素就是容器。

当该元素拥有该属性时,子元素的float、vertical等属性都将失效。子元素就是项目。所有的项目按照主轴的方向排列成一排。

结构如下:

<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
</ul>

flex布局的整理 弹性布局

给ul添加属性:

ul {
 display: flex;
}

flex布局的整理 弹性布局

2.1 flex-direction

该属性决定主轴的方向: 默认是row

可选值有: row、 column、 row-reverse、 column-reverse

row:默认值,水平从左到右排列

row-reverse: 水平从右到左排列

column:垂直 从上到下排列

column-reverse:垂直 从下到上排列

row:

flex布局的整理 弹性布局

column:

flex布局的整理 弹性布局

row-reverse:

flex布局的整理 弹性布局

column-reverse:

flex布局的整理 弹性布局

2.2 flex-wrap

该属性用于决定容器内的项目是否换行,以及如何换行

可选值: nowrap、wrap、wrap-reverse

nowrap 不换行

wrap 换行 往下排列

wrap-reverse 换行 往上排列

nowrap:

flex布局的整理 弹性布局

容器宽度800,项目宽度200。因为容器的换行属性是nowrap(默认值)所以导致项目的宽度变为160.

wrap:

flex布局的整理 弹性布局

新的内容出现在第一行下方

wrap-reverse:

flex布局的整理 弹性布局

2.3 justify-content

该属性决定项目在容器的主轴上的排列方式

可选值: flex-start  flex-end   center  space-between  space-around  space-evenly 

flex-start (默认值)  靠左

flex-end   靠右

center  居中

space-between 开头的项目与结尾的项目是贴边的 中的空白平分

space-around 每一个项目的左右空白距离相等

space-evenly 每一个空白都相等

flex-start:

flex布局的整理 弹性布局

flex-end:

flex布局的整理 弹性布局

center:

flex布局的整理 弹性布局

space-between:

flex布局的整理 弹性布局

space-around:

flex布局的整理 弹性布局

2.4 align-items

该属性决定项目在容器中的垂直方向的对齐

可选值:     stretch flex-start flex-end  center baseline 

stretch  默认值  上贴顶 下贴底

flex-start 贴顶

flex-end  贴底

center 居中

baseline 文本基线对齐

stretch: 在没有高度时才会生效

flex布局的整理 弹性布局

flex-start:

flex布局的整理 弹性布局

flex-end:

flex布局的整理 弹性布局

center:

flex布局的整理 弹性布局

baseline:

flex布局的整理 弹性布局

2.5 align-content

当有多根轴线时才会生效,决定多根轴线在容器中的排列方式

可选值:    stretch flex-start flex-end center space-around space-between

stretch 默认值 表示填满

flex-start 贴顶

flex-end 贴底

center 居中

space-around 每一个轴线的空白距离相等

space-between 第一根轴线 贴顶 最后一根轴线 贴底 平分空白

stretch:

flex布局的整理 弹性布局

flex-start

flex布局的整理 弹性布局

flex-end:

flex布局的整理 弹性布局

center:

flex布局的整理 弹性布局

space-around:

flex布局的整理 弹性布局

space-between:

flex布局的整理 弹性布局

space-evenly:

flex布局的整理 弹性布局

3 项目属性

3.1 flex-grow

该属性决定项目的放大比例。

放大规则: 先计算容器宽度,再计算每一个项目的width、flex-basis、内容宽之和。剩余的部分按照每一个项目的flex-grow之和平分。每一个项目占自己的flex-grow值份。

demo: 

    没有flex-grow时的值


flex布局的整理 弹性布局
给第一个项目加flex-grow: 1
flex布局的整理 弹性布局
800 - 600之后,剩余200, 再查看每一个项目的flex-grow之和发现只有第一个拥有,此时由第一个项目占据剩余的200.

3.2 flex-shrink

该值决定缩小比例

计算规则: 计算容器宽度A,计算所有项目的实际宽度之和B,如果B大于A。此时flex-shrink属性生效。

(B - A) / 所有项目的flex-shrink属性之和 = C。 就是shrink值为1所应当缩小的值。再每一个项目就缩小shrink值*C

demo:

flex布局的整理 弹性布局

3.3 flex-basis

该属性决定项目所占宽度优先于width与内容

优先级: flex-basis > width > 内容宽

demo:

li {
     flex-basis: 100px;
     width: 120px;
     height: 40px;
     text-align: center;
     line-height: 40px;
​​​​​​​     box-sizing: border-box;​​​​​​​
     border: 1px solid orange;​​​​​​​     
}

flex布局的整理 弹性布局

3.4 flex

该属性是一个融合属性 分别表示 flex-grow flex-shrink flex-basis

flex: 0 1 auto; 后两个属性可以省略

等价于

flex-grow: 0;

flex-shrink: 1;

flex-basis: auto;

3.5 order

该属性决定项目在容器中的排列顺序

默认值是1 越小越靠前

flex布局的整理 弹性布局

3.6 align-self

该属性决定项目在容器中的垂直方向的对齐方式,会覆盖父容器的align-items。

可选值:    stretch  flex-start flex-end  center baseline

stretch  默认值  上贴顶 下贴底

flex-start 贴顶

flex-end  贴底

center 居中

baseline 文本基线对齐

​​​​​​​flex布局的整理 弹性布局

以上就是本人对flex的整理,有漏的地方,@me。

upup!认真对待每一天!

 

相关文章: