CSS入门笔记——CSS动画

144 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

动画

动画就是把动作分解的连续的画幅,通过快速的播放,利用视觉暂留,使人感觉动作流畅进行的效果。

使用left进行动画:

通过计时器,每过一段对box进行一次移动,直到目标地点。浏览器在移动过程中一直进行渲染。

使用transform进行动画:

与lefe方式,在移动过程中就渲染2次,开始一次,结束一次,性能上升。

浏览器渲染过程

  • 根据HTML构建HTML树。(DOM)
  • 根据CSS构建CSS树。(CSSOM)
  • 两棵树合并成一颗渲染树。(render tree)
  • Layout布局(文档流,盒模型,计算大小和位置)
  • Paint绘制(把边框颜色,文字颜色,阴影等画出来)
  • Compose合成(根据层叠关系展示画面)

image.png

使用JS更新样式需要经过哪些步骤

image.png

可以使用CSS Triggers进行查阅。

transform

transform的四个常用功能

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

translate:

translateX是沿X轴进行移动,translateY是沿Y轴,translateZ沿Z轴。其中沿Z轴较为复杂,需要设置一个视点,如下展示:

scale:

rotate:

默认是沿Z轴旋转,rotateX是沿X轴进行旋转,rotateY是沿Y轴进行旋转。

skew:

做一个会动的心

鼠标悬浮,心出现动画。

transition过度

作用: 补充中间帧

语法:

  • transition:属性 时长 过渡方式 延迟
  • transition:left 200ms linear ( 使用all可以代表所有属性)
  • 常见的过渡方式:linear | ease | ease-in | rase-out | ease-in-out|MDN自己查
  • 可以利用forwards停在最后一帧。

@keyframes完整语法

  • 第一种是from to
@keyframes name {
    from{
        transform:translateX(0%);
}
    to{
        transform:translateX(100%);
    }
}
  • 第二种写法是百分数
@keyframes name {
    0%{top:0;left:0;}
    30%{top:50px;}
    60%{left:50px;}
    100%{top:100px;left:100%;}
}

animation

animation:时长|过渡方式|延迟|次数|方向|填充模式|是否暂停|动画名;

利用animation制作一个红心