CSS 动画小记

419 阅读2分钟

1.浏览器渲染原理

浏览器渲染过程(步骤)

  1. 根据HTML构建HTML树(DOM)

  2. 根据CSS构建CSS树(CSSOM)

  3. 将两棵树合并成一颗渲染树(Render Tree)

  1. Loyout布局(文档流、盒模型、计算大小和位置

  2. Paint绘制(把边框颜色、文字颜色、阴影等画出来)

  3. Compose合成(根据层叠关系展示画面)

参考文章

样式的三种更新方式

2.CSS 动画的两种做法(transition 和 animation)

transform

四个常用功能

  • 位移 translate
  • 缩放 scale
  • 旋转 rotate
  • 倾斜 skew

使用transform一般都配合transition过渡一起使用,inline元素不支持transform,使用前先变成block元素。

translate

常用写法transform:translateX/Y(<length-percentage>)或者transform:translate(<length-percentage>,<length-percentage>),值写长度值或百分比表示在X轴和Y轴上进行二维上的平移

scale

scale() 用于修改元素的大小。可以通过向量形式定义的缩放值来放大或缩小元素,同时可以在不同的方向设置不同的缩放值。tramsform:scale(1)等同于变换: scaleX(1) scaleY(1),建议少用,因为会出现模糊。

rotate

tramsform:rotate(45deg)默认是rotateZ(),指定的角度定义了旋转的量度。若角度为正,则顺时针方向旋转,否则逆时针方向旋转。

skew

tramsform:skew(<angle>)定义了一个元素在二维平面上的倾斜转换,用的较少,需要用时搜mdn

transition

作用

补充中间帧

语法

  • transition: 属性名 时长 过渡方式 延迟 ;可以用all表示所有属性
  • 过度方式有:linear(线性变化)| ease | ease-in | ease-out | ease-in-out | cubic-bezier | step-start | step-end | steps
  • 并不是所有属性都可以过渡 display:none => block没法过渡,一般改成: visibility:hidden => visible

animation

作用

  • animation 属性用来指定一组或多组动画,每组之间用逗号相隔
  • 声明关键帧,添加动画

语法

  • animtion:时长 | 过渡方式 | 延迟 | 次数 | 方向 | 填充模式 | 是否暂停 | 动画名 ;
  • 时长1s或1000ms
  • 过渡方式:根transition一样
  • 方向:reverse | alternate | alternate-reverse
  • 次数:3或者2.4或者infinite
  • 填充模式:none | forwards | backwards | both
  • 是否暂停:paused | running
  • 以上属性都有对应的单独属性 有两种写法 第一种from...to...
@keyframes 动画名 {
  from { transform: ; }
  to   { transform: ; }
}

第二种百分比写法

@keyframes xxx{
    0%{transform: ;}
    50%{transform: ;}
    100%{transform: ;}
}

注:以上所有截图来自《饥人谷》