CSS动画知识总结

151 阅读2分钟

1.浏览器渲染过程:

  • 解析HTML生成DOM树。
  • 解析CSS生成CSSOM规则树。
  • 将DOM树与CSSOM规则树合并在一起生成渲染树(render tree)。
  • 遍历渲染树开始布局(Layout),对渲染树的每个节点进行布局处理,确定其在屏幕上的显示位置。
  • 将渲染树每个节点绘制(Paint)到屏幕。
  • 合成(Compose),根据层叠关系展示页面。

2.重绘(repaint):

  • 改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性时,屏幕的一部分要重画,但是元素的几何尺寸没有变。
  • 每次重绘后浏览器还需要合并渲染层并输出到屏幕上,大大降低性能。
  • 使用transform(变形)没有重绘这一步骤,可提高性能。

3.transform(变形):应用于元素的2D或3D转换。这个属性允许你将元素移动(translate),缩放(scale),旋转(rotate),倾斜(skew)等。下面是他的常用值:

  • translate:translate3d(x,y,z)、 translateX(x)、translateY(y)、translateZ(z)、translate(x,y)。参数x表示元素在x轴方向上的移动距离,参数y表示元素在y轴方向上的移动距离,两者的单位可以为px、em和百分比等。
  • scale:scaleX()、scaleY()、scale()。参数x表示元素在x轴方向的缩放倍数,参数y表示元素在y轴方向的缩放倍数。当x或y取值为0~1之间时,元素进行缩小;当x或y取值大于1时,元素进行放大。
  • rotate:rotate3d(x,y,z,angle)、rotateX(angle)、rotateY(angle)、rotateZ(angle)。表示以那个轴发生旋转。
  • skew:skew(x-angle,y-angle) 定义沿着 X 和 Y 轴的 2D 倾斜转换。skewX(angle) 定义沿着 X 轴的 2D 倾斜转换。skewY(angle) 定义沿着 Y 轴的 2D 倾斜转换。

4.animation(动画),以下列出几个属性常用标签

  • animation-name :指定要绑定到选择器的关键帧的名称;
  • animation-duration :动画指定需要多少秒或毫秒完成;
  • animation-timing-function :设置动画将如何完成一个周期(linear 动画从头到尾的速度是相同的;ease动画以低速开始,然后加快,在结束前变慢。);
  • animation-delay :设置动画在启动前的延迟间隔;
  • animation-iteration-count:定义动画的播放次数(infinite无限次);
 #heart{
            /* heart指定要绑定到选择器的关键帧的名称*/
            animation: heart 1s infinite alternate;
        }
        /* keyframes(关键帧)后跟animation-name:heart */
        @keyframes heart{
            0%{
                transform:scale(1.0);
            }
            100%{
                transform: scale(1.5);
            }
            
        }

5.transition(过度):

  • transition-property :指定CSS属性的name,transition效果,如width,height,all(全部属性);
  • transition-duration:transition效果需要指定多少秒或毫秒才能完成;
  • transition-timing-function :指定transition效果的转速曲线;
  • transition-delay :定义transition效果开始的时间;