flex 布局也叫做 弹性盒子布局。
指 父元素在子元素大小不知道的情况下或者子元素动态变化的情况下,依然可以控制子元素的间隙。
设置为 flex 的容器,默认有两条轴,一条是水平轴,也叫做主轴,另外一条是垂直轴,默认子元素沿着水平轴的方向排列。
flex 也是有缺陷的,设置flex 布局的容器下面的子元素的 float、vertical-align、clear 属性会失效。
flex 是 flex-grow、flex-shrink、flex-basis 的简写。
flex 也可以写成 flex: 0 1 auto;
- flex-grow 默认值是0,表示项目的放大比例,在项目有剩余空间的情况下,为0,表示不放大,为1,表示自适应
- flex-shrink默认为1,表示项目的缩小比例,当剩余空间不够的时候,默认会缩小,设置成0,不会缩小
- flex-basis默认值为 auto,浏览器依靠这个属性判断主轴的空间是否有剩余
// flex: 1
// 等价于
flex-grow: 1;
flex-shrink: 1;
flex-basis: 1;
// flex: 0%;
// 等价于
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0%;
// flex: 24px;
// 等价于
flex-grow: 1;
flex-shrink: 1;
flex-basis: 24px;
// flex: 2 3
// 等价于
flex-grow: 2;
flex-shrink: 3;
flex-basis: 0%;
// flex: 1 0%;
flex-grow: 1;
flex-shrink: 1; // 此时它的默认值为 1
flex-basis: 0%;