https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

flex是一个集成属性

flex: 0 1 auto (默认值),由下面三个属性集成

  • flex-grow : 项目放大比例 默认为0,即不放大,可设为剩余空间的比例数;
  • flex-shrink : 项目缩小比例 默认为1,即空间不足时,该项目将缩小,不能设为负值;
  • flex-basis : flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

flex计算过程:

  1. 先由 flex-basis 计算出主轴是否由多余空间,如果有=>2 ,如果没有=>3 ;
  2. 查看item的flex-grow,如果为0 ,则常规排列,如果不为0,按比例分配;
  3. 产看item的flex-shrink,如果为0,且flex-grow为0 ,如果容器设置了flex-wrap属性,则按照flex-wrap,否则遵从超出部分计算(即参考容器的overflow属性);

如果flex-grow不为0 则项目缩小,占满空间;