1

前言

flexbox盒模型, 可伸缩式 (弹性) 布局, 能够有效改变盒子内容器大小, 填补盒子未使用的空间, 收缩容器以避免溢出盒子模型. 极其简单的控制盒子内的容器垂直, 水平布局

W3C官网地址

介绍

flex布局表面上类似于block布局, 不过flex布局缺少了 float, columns 等属性. 带来的回报是提供更加简单强大的工具,可以有效的分配 web页面的的空间内容.

  • 可以在任何方向上排列
  • 可以将显示顺序进行反转(reversed)
  • 可以沿一个主轴线线性排列,或者沿着交叉轴线多条直线排列
  • 可以响应收缩块内容的空间大小
  • 可以在交叉轴上与容器彼此对齐

Flex布局框模型

一个flex布局主要为 display: flex;display: inline-flex;

clipboard.png

失效的属性

  • column-*
  • float, clear
  • vertical-align
  • ::first-line, ::first-letter, 伪元素

Flex Items

简单的来说, flex items 就是 flex 容器里面的框(块)

  • 绝对定位 (position:absolute;) 不参与 flex 布局
  • 相邻的item块的 margin 不会被合并

泛 flex属性

flex-flow

同时定义flex容器的主轴和交叉轴的属性
value: flex-direction || flex-wrap

官网介绍
demo

flex-direction

设置主轴(main axis)方向
value: row | row-reverse | column | column-reverse
initial: row

官网介绍

flex-wrap

设置单行还是多行,以及定义交叉轴的方向

value: nowrap | wrap | wrap-reverse
initial: nowrap

官网介绍

flex

由多个属性组合而成

value: none | <'flex-grow'> <'flex-shrink'> ? || <'flex-basis'>

flex-grow

item块扩展空间的比利占有, 当空间有剩余时进行扩展.

value: number
initial: 0
公式介绍
example

flex-shrink

item块收缩空间的比利占有,当空间不足时进行收缩. (flex-wrap: nowrap; 有效)

value: number
initial: 1
公式介绍
demo

flex-basis

设置flex块的基本宽度. (flex-wrap: nowrap 有效)

value: auto | <width>
initial: 1

order

块顺序, 手动设置块的显示顺序,默认是以块出现顺序进行排序

value: <integer>
initial: 0

justify-content

在主轴线上,对于有空闲的空间的容器来说, 允许内容沿着当前行的主轴线对齐

value: flex-start | flex-end | center | space-between | space-around
initial: flex-start

clipboard.png

justify-content 属性描述

  • flex-start:弹性盒子元素将向行起始位置对齐。该行的第一个子元素的主起始位置的边界将与该行的主起始位置的边界对齐,同时所有后续的伸缩盒项目与其前一个项目对齐。
  • flex-end:弹性盒子元素将向行结束位置对齐。该行的第一个子元素的主结束位置的边界将与该行的主结束位置的边界对齐,同时所有后续的伸缩盒项目与其前一个项目对齐。
  • center:弹性盒子元素将向行中间位置对齐。该行的子元素将相互对齐并在行中居中对齐,同时第一个元素与行的主起始位置的边距等同与最后一个元素与行的主结束位置的边距(如果剩余空间是负数,则保持两端相等长度的溢出)。
  • space-between:弹性盒子元素会平均地分布在行里。如果最左边的剩余空间是负数,或该行只有一个子元素,则该值等效于'flex-start'。在其它情况下,第一个元素的边界与行的主起始位置的边界对齐,同时最后一个元素的边界与行的主结束位置的边距对齐,而剩余的伸缩盒项目则平均分布,并确保两两之间的空白空间相等。
  • space-around:弹性盒子元素会平均地分布在行里,两端保留子元素与子元素之间间距大小的一半。如果最左边的剩余空间是负数,或该行只有一个伸缩盒项目,则该值等效于'center'。在其它情况下,伸缩盒项目则平均分布,并确保两两之间的空白空间相等,同时第一个元素前的空间以及最后一个元素后的空间为其他空白空间的一半

align-items

item块在交叉轴对齐

value: flex-start | flex-end | center | baseline | stretch
initial: stretch
clipboard.png

align-self

重写单个item块的对齐方式

value: auto | flex-start | flex-end | center | baseline | stretch
demo

align-content

当交叉轴有剩余空间时,会设置自由盒内部各个项目在垂直方向排列方式. (flex-wrap: wrap; 有效)

value: flex-start | flex-end | center | space-between | space-around | stretch
initial: stretch
demo
clipboard.png

官网介绍


wayneli
1.4k 声望828 粉丝

2017-2018年目标