026FLEX

flex布局
CSS3弹性盒子(Flexible Box或Flexbex),是一种用于在页面上布置元素的布局模式,使得当页面布局必须适应不同的屏幕尺寸和不同的显示设备时,元素可预测地运行/列。对于许多应用程序,弹性盒子模型提供了对块模型的改进,因为它不使用浮动,flex容 器的边缘也不会与其内容的边缘折叠。
  -老版本的我们通常称之为box-webkit-box
    --老版本的box通过两个属性四个属性值控制了主轴的位置和方向
  -新版本的我们通常称之为flex-webkit-flex / flex
    --新版本的flex通过一个属性四个属性值控制了主轴的位置和方向
  -有了新版本后,为什么还需要老版本? (新版本比老版本要强大的很多)很多移动端浏览器内核版本都超低
项目永远在主轴的正方向上排列
重点理解:容器与项目 主轴与侧轴
由flex-direction/ -webkit-box-orient确定

容器的布局方向 (注意:项目永远是在主轴,上排列的)
旧:-webkit-box-orient
  -本质上确定了主轴是哪一根。控制主轴和侧轴分别是哪一根
值:
  -horizontal: x轴
  -vertical :y轴
-webkit- box-orient: horizontal;
-webkit- box-orient: vertical;

新:flex-direction
值:
 row - flex容器的主轴被定义为与文本方向相同。 主轴起点和主轴终点与内容方向相同。(行)
 column - flex容器的主轴和块轴相同。主轴起点与主轴终点和书写模式的前后点相同(列)
display:flex;
flex-direction: row ;
display:flex;
flex-direqtion: column;

容器排列方向(注意:项目永远是沿着主轴的正方向排列的)
旧:-webkit- box-direction
  -改变主轴的方向
-webkit-box-direction: normal;正常
-webkit-box-direction: reverse;反转

新:flex-direction
值:
  row-reverse -表现和row相同,但是置换了主轴起点和主轴终点
  column-reverse -表现和column相同,但是置换了主轴起点和主轴终点
display:flex;
flex-direction: column-reverse;

富裕空间的管理(分主轴,副轴)
旧:-webkit -box-pack/align
( 主轴)
x轴
  -start  富裕空间在右边x) 下边 (y)
  -end  富裕空间在左边(x) 上边(y)
  -center 富裕 空间在两边
  -justify 富裕空间在项目之间

y轴
start:在下边
end:在上边
center:在两边
justify:在项目之间
-webkit -box-pack: justify;
-webkit- box- pack:start;不会给项目区分配空间,只是确定富裕空间的位置

(侧轴)
  -start  富裕空间在右边 (x)下边 (y)
  -end  富裕空间在左边 (x) 上边(y)
  -center 富 裕空间在两边
-webkit -box-align:end;
-webkit-box- align:center;不会给项目区分配空间,只是确定富裕空间的位置

新:justify-content/align-items
(主轴)
  flex-start    富裕空间在主轴的正方向
  flex-end"    富裕空间在主轴的反方向
  center     富裕空间在主轴的两边
  space- between 富裕空间在项目之间
  space- around (box没有的)富裕空间在项目两边
justify-content: space - around;
(侧铀)
  flex-start:   富裕空间在侧轴的正方向;
  flex-end;   富裕空间在侧轴的反方向;
  content:   富裕空间在侧轴的两边;
  baseline   (box没有的)按基线对齐
  stretch    (box没有的)等高布局(等高布局设置height无效)
align-items: stretch;

弹住空间的管理将富裕空间按比例分配到各个项目上,将主轴上的富裕空间按比例分配到项目的width/height上!
旧:-webkit- box-flex
默认值:0不可继承
-webkit- box- flex: 1;数字为比例

新:flex-grow
flex-grow: 1
/*flex-grow,box -flex默认值都为0

flex新增:
flex-wrap
flex-wrap属性控制了容器为单行/列还是多行例。并且定义了侧轴的方向,新行/列将沿侧铀方向堆砌。
默认值: nowrap不 可继承
值: nowrap  -元素被摆放到到一行,,默认压缩。可能会溢出
wrap     -元素 被打断到多个行中,元素排列按侧轴正方向,flex-shrink失效
wrap-reverse -元素元素 被打断到多个行中,排列按此时侧轴正方向,flex-shrink失效

/*控制侧轴的方向*/
flex-wrap: wrap-reverse;
/*多行多列时,富裕空间的管理,会把所有行、列看成一个整体| /
align-content: flex-end;-

align-content(多行多列看这个)
align- content属性定义弹性容器的侧轴方向上有额外空间时,如何排布每-行/列。当弹性容器只有一行/列时无作用
默认值: stretch不可继承
值:
flex-start
所有行/列从侧轴起点开始填充。第-行/列的侧轴起点边和容器的侧轴起点边对齐。
接下来的每一行/列紧跟前一行/列。
flex- end
所有弹性元素从侧轴末尾开始填充,最后一个弹性元素的侧轴终点和容器的侧轴终点对齐.
同时所有后续元素与前一个对齐。
center
所有行/列朝向容器的中心填充。每行/列互相紧挨,相对于容器居中对齐。
容器的侧轴起点边和第一-行/列的距离相等于容器的侧轴终点边和最后一行/列的距离。
space- be tween
所有行/列在容器中平均分布o相邻两行/列间距相等。
容器的侧轴起点边和终点边分别与第-行/列和最后一行/列的边对齐●
space- around
所有行/列在容器中平均分布,相邻两行/列间距相等。
容器的侧轴起点边和终点边分别与第-行/列和最后一行/列的距离是相邻两行/列间距的一.丰。
stretch
拉伸所有行/列来填满剩余空间◆剩余空间平均的分配给每一行/列

/*控制侧轴的方向*/
flex-wrap: wrap-reverse;
//多行多列时,富裕空间的管理会把所有行、列看成一个整件
align-content: flex-end;

flex-flow
flex- flow属性是设置“flex- direction"和“flex-wrap"的简写
默认值: row nowrap
不可继承
控制主轴和侧轴的位置以及方向

order
order属性规定了弹性容器中的可伸缩项目在布局时的顺序.元素按照order属性的值的增序进行布局。拥有相同order属性值的元素按照它们在源代码中出现的顺序进行布局
order越大越后排
默认值: 0不可维承
026FLEX
026FLEX

align-self(管理单个项目)
align-self会对其当前flex 行中的flex 元素,并覆盖align-items 的值.如果任何flex 元素的侧轴方向margin值
设置为auto,则会忽略align- self.
默认值: auto不可继承
值:
auto
设置为父元素的align-items值,如果该元素没有父元素的话,就设置为stretch.
flex-start
flex元素会对齐到cross-axis的首端。
flex-end
flex元素会对齐到cross-axis 的尾端o
center
flex元素会对齐到cross-axis的中间,如果该元素的cross-size的尺寸大于flex容器,
将在两个方向均等溢出。
baseline
所有的flex元素会沿着基线对齐,
stretch
flex元素将会基于容器的宽和高,按照自身margin box的cross-size拉伸

flex-shrink收缩因子,前提flex-wrap:nowrap
flex- grow属性定义弹性盒子项( flex item)的拉伸因子。默认值0
fex- shrink属性指定了flex 元素的收缩因子默认值为1

flex- shrink:
每项flex收缩大小=伸展基准值- (收缩比例/收缩比例总和x溢出的空间)–>并不是
87
026FLEX
026FLEX

flex-basis
flex-basis指定了flex 元素在主轴方向上的初始大小
默认值: auto不可继承
注意:在flex简写属性中flex- basis的默认值为0

fex- grow :
可用空间= (容器大小-所有相邻项目flex- basis的总和)
400-550=150
400-5
0=400
可扩展空间= (可用空间/所有相邻项目flex- grow的总和)
150/8=18.75
400/8=50
每项伸缩大小= (伸缩基准值(flex-basis)+ (可扩展空间x flex- grow值)
50+(18.754)=125 50+(18.751)=68.75
0+(504)=200 0+(501)=50

026FLEX
026FLEX

026FLEX

flex简写属性

90
fle做等分,等高