重学前端 - CSS部分-动画与交互

概述

CSS 中跟动画相关的属性有两个:animation 和 transition。

animation 属性

基本用法:

@keyframes mykf
{
  from {background: red;}
  to {background: yellow;}
}

div
{
    animation:mykf 5s infinite;
}

实际上 animation 分成六个部分:

  • animation-name 动画的名称,这是一个 keyframes 类型的值(产生一种数据,用于定义动画关键帧);
  • animation-duration 动画的时长;
  • animation-timing-function 动画的时间曲线;
  • animation-delay 动画开始前的延迟;
  • animation-iteration-count 动画的播放次数;
  • animation-direction 动画的方向。

transition 属性

它有四个部分:

  • transition-property 要变换的属性;
  • transition-duration 变换的时长;
  • transition-timing-function 时间曲线;
  • transition-delay 延迟。

实际上,有时候我们会把 transition 和 animation 组合,抛弃 animation 的 timing-function,以编排不同段用不同的曲线。

@keyframes mykf {

    
  0% { top: 0; transition:top ease}
    
  50% { top: 30px;transition:top ease-in }

  75% { top: 10px;transition:top ease-out }

  100% { top: 0; transition:top linear}
    
}

timing-function-动画的时间曲线

CSS 的时间曲线选用的是(三次)贝塞尔曲线,贝塞尔曲线是一种被工业生产验证了很多年的曲线,它最大的特点就是“平滑”。时间曲线平滑,意味着较少突兀的变化,这是一般动画设计所追求的。

理论上,贝塞尔曲线可以通过分段的方式拟合任意曲线,但是有一些特殊的曲线,是可以用贝塞尔曲线完美拟合的,比如抛物线。