flex布局总结

布局的传统解决方案,基于盒状模型,依赖 display 属性 + position 属性 + float 属性

什么是 flex 布局

FlexFlexible Box),即为”弹性布局”。设为 Flex 布局以后,子元素的 floatclearvertical-align 属性将失效。

1
2
3
4
5
.box {
display: -webkit-flex; /* Safari */
display: flex;
display: inline-flex; /* inline元素 */
}

容器的属性

以下属性设置在 flex 布局中的父元素(即设有 display:flex 的元素),用来控制内部子元素的行为。

1
2
3
4
5
6
7
8
.box {
flex-direction: row(默) | row-reverse | column | column-reverse;
flex-wrap: nowrap(默) | wrap | wrap-reverse;
flex-flow: <flex-direction> <flex-wrap>;
justify-content: flex-start(默) | flex-end | center | space-between | space-around;
align-items: flex-start | flex-end | center | baseline | stretch(默);
align-content: flex-start | flex-end | center | space-between | space-around | stretch(默);
}
  • flex-direction: 子元素的排列方向。
    • row: 水平方向,起点在左端。
    • row-reverse: 水平方向,起点在右端。
    • column: 垂直方向,起点在上沿。
    • column-reverse: 垂直方向,起点在下沿。
  • flex-wrap: 如果子元素一条线排不下,如何换行。
    • nowrap: 不换行。
    • wrap: 换行,第一行在上方。
    • wrap-reverse: 换行,第一行在下方。
  • flex-flow: flex-directionflex-wrap 的简写形式。
  • justify-content: 子元素在一条横线上的对齐方式。
    • flex-start: 左对齐。
    • flex-end: 右对齐。
    • center: 居中。
    • space-between: 两端对齐,项目之间的间隔都相等。
    • space-around: 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
  • align-items: 每个子元素在垂直方向上的对齐方式。
    • flex-start: 对齐顶部。
    • flex-end: 对齐底部。
    • center: 垂直居中。
    • baseline: 子元素的第一行文字的基线对齐。
    • stretch: 如果子元素未设置高度或设为 auto,将占满整个容器的高度。
  • align-content: 定义数量超过一行的子元素的垂直对齐方式。
    • flex-start: 对齐顶部。
    • flex-end: 对齐底部。
    • center: 垂直居中。
    • space-between: 垂直两端对齐,轴线之间的间隔平均分布。
    • space-around: 垂直两端对齐,每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
    • stretch: 如果子元素未设置高度或设为 auto,将占满整个容器的高度。

容器内子元素的属性

1
2
3
4
5
6
7
8
.item {
order: <integer>; /* 定义子元素的排列顺序。数值越小,排列越靠前,默认为0。 */
flex-grow: <number>; /* 定义子元素的放大比例,默认为0,即如果存在剩余空间,也不放大。 */
flex-shrink: <number>; /* 定义了子元素的缩小比例,默认为1,即如果空间不足,该项目将缩小。 */
flex-basis: <length> | auto; /* 定义了子元素所占固定空间(如100px),默认auto */
flex: <flex-grow> <flex-shrink(可选)> <flex-basis(可选)> ]; /* 快捷值:auto (1 1 auto) 和 none (0 0 auto) */
align-self: auto(默) | flex-start | flex-end | center | baseline | stretch; /* 该属性用来覆盖父元素统一的align-items属性,达到该子元素的个性化 */
}
---- 本文结束,感谢您的阅读 ----