flexbox是HTML5中提出的新的布局方式。
使用时,须要将父子节点的display
都设置为flex
。
每一个参赛的效果能够参考这里布局
控制子界点的方向。一共有4个值:flex
.container { flex-direction: row; // default 从左往右,靠父节点左边 flex-direction: row-reverse; // 从右往左,靠父节点右边 flex-direction: column; // 从上往下,靠父节点顶部 flex-direction: column-reverse; // 从下往上,靠父节点底部 }
控制子元素是不是如今在一行中。若是设置为显示到一行中,可是子元素的宽度和大于父节点宽度,那么子元素会对应缩小。flexbox
.container { flex-wrap: nowrap; // default 显示到一行中 flex-wrap: wrap; // 多行显示,行顺序顺序显示 flex-wrap: wrap-reverse; // 多行显示,行顺序倒序显示 }
flex-direction
和flex-wrap
两个的简写。spa
flex-flow: [flex-direction] [flex-wrap]
控制子元素的上下对齐方式。一共有5个值。code
.container { align-items: flex-start; // 容器顶部对齐 align-items: flex-end; // 容器底部对齐 align-items: center; // 中间对齐 align-items: baseline; // 子元素文字baseline对齐 align-items: stretch; // 上下对齐,会改变子容器的高度 }
父容器同向多余空间的展现方式。有6个值。排序
.container { justfy-content: flex-start; // 子元素靠前,多余空间靠后 justfy-content: flex-end; // 子元素靠后,多余空间靠前 justfy-content: center; // 子元素剧中,多余空间平均放先后 justfy-content: space-between; // 多余空间放子元素中间 justfy-content: space-around; // 多余空间环绕元素周边 }
相似于justfy-content
, 管理父容器垂直方向多余空间的展现。6个值。get
.container { align-content: flex-start; // 子元素靠前, align-content: flex-end; // 子元素靠后 align-content: center; // 子元素居中,多余空间放先后 align-content: stretch; // 子元素铺满整个父容器 align-content: space-between; // 多余空间放子元素中间 align-content: space-round; // 多余空间环绕元素周边 }
同algin-item
,不过algin-self
是做用于子元素本身。应该有6个值it
.item { align-self: auto; // default 默认模式,按照父节点的algin-item来显示 align-self: flex-start; // 顶部对齐 align-self: flex-end; // 底部对齐 align-self: center; // 居中对齐 align-self: baseline; // baseline对齐 align-self: stretch; // 填充满 }
子元素间的大小比例。io
.item { width: 100px; } .item01 { flex-grow: 1; } .item02 { flex-grow: 2; }
超出父容易后的收缩比率。 举个例子:父容器400px;有三个子元素,都是200px;当设置第三个子元素flex-shrink
为3时,子元素的收缩比率就是1:1:3。
一共超出父元素200px;那么收缩的比率是40px:40px:120px; 也就是说子元素的实际展现宽是160px, 160px, 80px。容器
.container { width: 400px; } .item { width: 200px; } .item03 { flex-shrink: 3; }
若是全部子元素的基准值之和大于剩余空间,则会根据每项设置的基准值,按比率伸缩剩余空间
.item { flex-basis: 10px; }
flex-grow
, flex-shrink
, flex-basis
三者的简写。
.item { flex-grow: [flex-grow] [flex-shrink] [flex-basis]; }
控制子元素的顺序。order会改变子元素排序的前后。
.item01 { order: 2; } .item02 { order: 1; }