1. animation: name duration delay timing-function count forwards
 @keyframes name {
 0% === from{
 }
 100% === to{
 }
 }
 没有延迟
 animation-fill-mode: forwards 0%动画不会立即执行, 结束时会停留在结束状态
 backwards 0%动画会立即执行, 结束时不会停留在结束状态
 both 0%动画会立刻执行, 结束时会停留在结束状态
2. 弹性布局
1)开启弹性布局: 给父盒子 display: flex(使每一个子元素编=变成伸缩项)
设置弹性布局属性: 给父盒子
2) (主轴方向的对齐方式)justify-content: flex-start/flex-end/center(从哪里开始,子元素之间没有距离)
 space-around(将多余的宽度平均分配给每一个子盒子)
space-between(间隔在两边)
 (侧轴方向的对齐方式)align-items: flex-start/flex-end/center
 stretch 拉伸
 base 基线对齐
 (给单个子元素设置) self-align: 
 问题:子元素成为伸缩盒子之后,有一个问题是: 当子元素跨度大于父元素时, 子元素会平均缩放,直至能够同行显示,
 这种情况下, 子盒子自身设置的宽度都是无效的,所有需要flex-flow属性来让它换行
 3) (换行)flex-flow : 实质是flex-wrap 和 flex-direction的属性结合
 flex-wrap: 控制是否换行, 默认不换行
 wrap === 换行
 nowrap === 不换行
 wrap-reverse === 默认从上都下, 设置之后, 从下往上
 flex-direction: 默认是水平方向row
 row 主轴方向为x轴, 副轴为y轴
 column 垂直方向(当子元素高度和大于父元素高度时, 换列显示)
 column-reverse; 垂直排列方向, 从下往上
4)可以联合写: flex-flow: wrap column; (实际应用分开写)
5)flex 是 flex-gorw flex-shrink 的联合属性
flex-grow:1; 默认值是0 设置给子元素 每个子元素设置的值不同,根据比例放大
flex-shrink: 默认值是1 (所以如果设置为1,那么和其他盒子宽度还是一样) 按比例缩小
flex:1; 占父盒子剩余空间;