伸缩盒模型-新

第三版标准,和旧版大同小异,只是添加了几个属性,更改了些细节,推荐和旧标准一起写防止不兼容

下面的属性需要前置条件,display: flex;依然需要前缀

flex

flex-grow,flex-shrink,flex-basis的集合属性

none: none的计算值为0 0 auto

1: 计算值为1 1 0%

auto: 计算值为1 1 auto

o auto: 计算值为0 1 auto

flex-grow

定义扩展比例,和box-flex类似,注意:新版的是分配所有剩余空间,而不是分配剩余空间,只生效于父元素大于子元素所有长度和的情况

取值:

number
定义扩展比例,不允许负值,默认0

这里总共有600px,按1:2:3的比例,第一个分到100,第二个分到200,第三个分到300,和旧标准不一样。旧标准可以设置width: 0;来模仿新标准

1
2
3

flex-shrink

定义伸缩比例,生效于父元素的长度小于子元素和的长度,flex-shrink,flex-grow加起来等于box-flex

取值:

number
定义收缩比例,不允许负值,默认0

父DIV宽度200,子DIV宽度100,收缩比例为1:2:3。100*3-200=100;第一个div=100-100/6*1=82.328。第二个div=100-100/6*2=64.672,第三个div=100-100/6*3=47

1
2
3

flex-basis

如果子元素之和大于父元素,则根据设置的基准值按比例伸缩剩余空间

取值:

length
用长度值来定义基准值
percentage
用百分比定义基准值
auto(默认)
取决于其他影响宽度的属性
content
基于内容自动计算

按1:2:1的比例进行分配

1
2
3

flex-flow

flex-direction,flex-wrap的复合属性

flex-direction

定义对齐方式,旧标准的box-orient+box-direction合在一起就是这个属性的效果

取值:

row(默认)
主轴与行内轴方向作为默认的书写模式。即横向从左到右排列(左对齐)
row-reverse
对齐方式与row相反
column
主轴与块轴方向作为默认的书写模式。即纵向从上往下排列(顶对齐)。
column-reverse
对齐方式与column相反。

flex-direction:row

flex-direction:row-reverse

flex-direction:column

flex-direction:column-reverse

flex-wrap

当子元素定宽或定高的时候,flex-shrink:0;可能会产生溢出的情况,flex-wrap定义是否折行

取值:

nowrap
flex容器为单行。该情况下flex子项可能会溢出容器
wrap
flex容器为多行。该情况下flex子项溢出的部分会被放置到新行,子项内部会发生断行
wrap-reverse
反转 wrap 排列

子元素超过父元素宽度,且收缩比例为0,溢出

1
2
3

flex-wrap: warp;子元素折行

1
2
3

flex-wrap: warp-reverse;子元素折行且反转

1
2
3

align-content

设置多行盒模型的对齐方式

取值:

flex-start
各行向弹性盒容器的起始位置堆叠
flex-end
各行向弹性盒容器的结束位置堆叠
center
各行向弹性盒容器的中间位置堆叠
space-between
各行在弹性盒容器中平均分布,如果剩余的空间是负数或弹性盒容器中只有一行,该值等效于'flex-start'
space-around
各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。如果剩余的空间是负数或弹性盒容器中只有一行,该值等效于'center'
stretch
各行将会伸展以占用剩余的空间。如果剩余的空间是负数,该值等效于'flex-start'。在其它情况下,剩余空间被所有行平分,以扩大它们的侧轴尺寸。

align-content:flex-start

align-content:flex-end

align-content:center

align-content:space-between

align-content:space-around

align-content:strecth

align-items

和旧标准的box-align类似,设置侧轴方向上的对齐方式

取值:

flex-start
子元素从开始方向排列
center
子元素居中对齐
flex-end
结束位置对齐
baseline
子元素基线对齐
stretch(默认值)
自适应父元素尺寸

align-items: start;

1
2
3

align-items: center;

1
2
3

align-items: end;

1
2
3

align-items: baseline;

1
2
3

align-items: stretch;

1
2
3

align-self

用于子元素的对齐方式,可以使子元素拥有自己的对齐方式,而不是有父元素固定一个对齐方式

和align-items基本类似,不过是作用于子元素

取值:

auto
如果'align-self'的值为'auto',则其计算值为元素的父元素的'align-items'值,如果其没有父元素,则计算值为'stretch'。
flex-start
弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界
flex-end
弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
center
弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
baseline
如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。
stretch
如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。

align-self示例:

justify-content

主轴方向对齐方式,和box-pack类似

取值:

flex-start(默认值)
子元素从主轴开始方向排列
center
子元素居中
flex-end
子元素在主轴末尾对齐
space-between
弹性盒子元素会平均地分布在行里
space-around
弹性盒子元素会平均地分布在行里,两端保留子元素与子元素之间间距大小的一半

justify-content:flex-start

justify-content:flex-end

justify-content:center

justify-content:space-between

justify-content:space-around

order

排列顺序,小的在前,大的在后

取值:

integer
数值,支持负数,默认0
1
2
3