布局
Flex 布局
容器:用来开启 flex 布局的父元素
项目:开启了 flex 布局的容器中的子元素
主要是六个容器属性、六个项目属性
容器属性
Flex-direction
- 可选值:row | row-reverse | column | column-reverse
 - 决定 
主轴的方向,或者说放置项目的方式,如果是row就像个正常人,一行一行地放;如果是column就像玩小猫钓鱼,一列一列地放。 
Flex-wrap
- 可选值: nowrap | wrap | wrap-reverse
 - 决定容器内项目是否可以换行。
nowrap可能会导致项目溢出容器或被压缩;wrap正常换行;wrap-reverse从交叉轴的末端开始放置容器,正常换行。注意:nowrap中间没有- 
Flex-flow
- Flex-direction 和 flex-wrap 的缩写形式
 
Justify-content
- 可选值:flex-start | flex-end | center | space-around | space-between| space-evenly
 - 项目在 
主轴上的对齐方式,可以理解成就是左对齐、右对齐、水平居中。 space-around:每个项目左右两边距离相等(中间缝隙是两边缝隙的两倍)space-between: 每两个项目之间距离相等(只有中间缝隙,两边缝隙为零)space-evenly:项目之间缝隙相等(中间缝隙等于两边缝隙)
注意:在弹性盒子布局中,justify-items 属性会被忽略
Align-content
- 可选值:flex-start | flex-end | center | space-around | space-between | space-evenly
 - 项目在 
交叉轴上的对齐方式,可以理解成上对齐、下对齐、垂直居中。 
Align-items
- 设定项目 align-self 属性的默认值但是实际上并不太用得上
 - 只能在弹性盒子和网格盒子中使用
 - 再次强调在弹性盒子布局中,justify-items 属性会被忽略
 
项目属性
- Order
- 可选值:数字默认是 
0 - 数值越小,越排在主轴方向(默认从左到右)的前面
 
 - 可选值:数字默认是 
 - Flex-grow
- 可选值 :数值默认是 
0 - 如何处理主轴上剩余空间
 
 - 可选值 :数值默认是 
 - Flex-shrink
- 如何处理主轴上溢出空间
 
 - Flex-basis
- 项目占据主轴的空间,优先级高于设置的 
width属性 
 - 项目占据主轴的空间,优先级高于设置的 
 - Flex
flex-growflex-shrink和flex-basis的缩写- 单值语法:
 - 无单位数字:视作 
flex:<number> 1 0即传入值被视作flex-grow同时flex-shrink被假定为 1,flex-basis被假定为 0 - 有效宽度:被视作 
flex-basis的值flex-grow和flex-shrink都为 1 - 关键字:auto、 initial
 - 双值语法:第一个数字必须为无单位数,它会被视作是 
flex-grow的值。第二个数根据是否无单位数被视作flex-shrink或者flex-basis - 三值语法:分别对应 
flex-growflex-shrink和flex-basis 
 - Align-self
- 可选值 :auto | flex-start | flex-end | center | baseline | stretch
 - 允许某个项目在交叉轴上有独特的定位方式,可以覆盖 
align-items设置的默认值 
 
手写一个左侧定宽右侧撑满的布局
<div id="wrapper">
        <div id="left"></div>
        <div id="right"></div>
</div>
<style>
    #wrapper {
        display: flex;
        height: 100vh;
    }
    #left {
        width: 300px;
        background-color: #158bb8;
    }
    #right {
        flex-grow: 1;
        background-color: #1491a8;
    }
</style>