flexible-box-layout 弹性盒式模型,它能更加高效的控制元素的对齐、排列,更重要的是能够自动计算布局内元素的尺寸,无论这个元素的尺寸是固定的还是动态的。
父元素(flex container)
子元素(flex item)
主轴(main axis)可由display-direction属性设置主轴的方向
交叉轴(cross axis)
不一定弹性盒子中水平方向的轴就是主轴,垂直方向上的轴就是交叉轴
主轴的起点(main start)
主轴的终点(main end)起点和终点决定了在自然情况下元素的排列顺序
交叉轴起点(cross start)
交叉轴终点(cross end)
主轴尺寸(main size)由flex container的尺寸决定
交叉轴尺寸(cross size)由flex container的尺寸决定
以下的7个属性是设置在容器上的
将目标容器布局方式设置为弹性布局
目标容器设置为弹性布局(块级元素)
display:flex
目标容器设置为弹性*布局(行内元素)
display:inline-flex //不再占据一整行
兼容浏览器(推荐写法)
display:-webkit-flex;
display:flex;
PS:设为 flex容器以后,flex子元素的float、clear和vertical-align属性将失效。
定义子元素在主轴的排列方式
flex-direction: row(默认) | row-reverse | column | column-reverse
设置flew-item的换行。
flex-wrap:nowrap(默认) | wrap | wrap-reverse
flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。且顺序不严格。
flex-flow: || ;
子元素在主轴上的对齐模式。通过父容器的属性控制子元素的排列。(如果flex-direction设置为row,那就是水平方向上的对齐模式,如果设置为column,那就是竖直方向上的对齐方式)
#####语法
justify-content: flex-start(默认) | flex-end | center | space-between | space-around;
控制容器内多行(多个轴线)在交叉轴上的排列方式。
也就是说只有当flew-wrap:wrap | wrap-reverse
的时候才有效果。多余的高度会被压缩,
align-content: flex-start | flex-end | center | space-between | space-around | stretch(默认值);
PS:每一行之间的间隙我是设置的margin: 10px;
子元素在交叉轴上的对齐。
align-items:flex-start | flex-end | center | baseline | stretch(默认);
align-content:
PS:反正单行用align-items,如果换行用align-content和align-items都行,就是效果有一点不同。
名词
控制子元素出现在父容器的顺序。
order:;
PS:子容器的顺序是按从小到大排列。
将剩余空间(刨去内容以外的空间)分配给子项目按照比例
红框部分为剩余空间
flex-grow:
该属性定义了在分配flex容器剩余空间之前,伸缩项所占的空间的基准。
配合flex-grow使用
flex容器剩余空间的计算公式: flex容器剩余空间 = flex容器空间 - basisi设置的空间 - 其他子元素内容空间
flex-basis: | auto(默认值) | 0;
当flex容器空间不足时,设置flex子元素的压缩比例。
flex-shrink: ;默认值:1
number :
如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。负值对该属性无效。
设置flex子元素的伸展、收缩、基准。
flex:, , ; //顺序不能颠倒
flex子元素(伸缩项)控制自己在交叉轴上对齐,之前的对齐是flex容器控制伸缩项在交叉轴上对齐(align-items)。
align-self:flex-start | flex-end | center | baseline | stretch | auto(默认);
PS:再强调一下:如果伸缩项目设置有flex-self且值不为auto,那么会覆盖伸缩容器为其设置的伸缩方式。
$ 200.000
最低消费金额 $ 300.000
03/01/2018 17.40 - 10/01/2018 17.40 CST
删 除
属性 | 用法 | 值 |
---|---|---|
伸缩容器(flex容器) | ||
flex-direction | 管理主轴方向 | row(默认)、row-reverse、column、column-reverse |
flex-wrap | 管理子元素是否换行 | nowrap(默认)、wrap、wrap-reverse |
justify-content<.font> | 决定子元素在主轴上的对齐方式 | flex-start(默认)、flex-end、center、space-between、space-around |
align-items | 决定子元素在交叉轴上的对齐方式 | flex-start 、flex-end 、center 、stretch(默认)、 baseline |
align-content | 决定子元素在多行情况下在交叉轴上的对齐方式 | |
伸缩项目 | ||
order | 决定子元素自身顺序 | 0(默认值) |
flex-grow | 子元素按比例分配剩余空间 | |
flex-shrink | 在空间不足的情况下,子元素按比例压缩自己 | |
flex-basis | 在分配剩余空间之前,设置子元素的自身的尺寸 | 1、0、auto(默认)、none |
align-self | 子元素决定自身的对齐方式 | |
简写 | ||
flex-flow | flex-direction + flex-wrap | |
flex | flex-grow + flex-shrink + flex-basis |