饥人谷技术博客

浏览器渲染原理及 CSS 动画

2022-06-27  本文已影响0人  cy_Wey

一、浏览器渲染原理

  1. 根据 HTML 构建 HTML 树(DOM)
  2. 根据 CSS 构建 CSS 树(CSSOM)
  3. 将 HTML 树和 CSS 树合成一棵渲染树( render tree)
  4. 根据文档流和盒模型计算大小和位置(layout 布局)
  5. 把边框颜色、文字颜色和阴影等画出来(paint 绘制)
  6. 根据层叠关系展示画面(compose 合成)

一般我们用 JS 来更新样式。浏览器渲染更新的过程有 3 种:

  1. JS -> style -> layout -> paint -> compose
    这种方式一种是 div 的移动

  2. JS -> style -> paint -> compose
    这种方式跳过了 layout,一般是改变了背景颜色

  3. JS -> style -> compose
    这种方式跳过了 layout 和 paint,一般是通过 transform 来改变的

二、CSS 动画

CSS 动画一般分为两种,transition 和 animation

1. transition 的用法

(1)语法
transition:属性值 过渡时间 过渡方式 延时
(2)可动画属性参见 MDN 的 CSS animated properties,常用的有,大小,位置,颜色
(3)过渡方式有以下几种

div {
  border: 2px solid red;
  width: 550px;
  height: 100px;
  transition: all 2s ease .9s;
}
div:hover {
 height : 200px;
}

一般 transition 只能从一个状态变化到另一个状态,后两个属性如果不需要设置可以省略,通常需要配合伪类 :hover,:active 或者 JS 一起使用,0.9 可以省略为 .9,不能循环变化,如果需要循环变化,需要使用下面介绍的animation (关键帧)来实现。

2. animation 的用法

(1) 创建关键帧

@keyframes 动画名字 {
    from { 状态1; }
    to { 状态2; }
}

或者

@keyframes 动画名字 {
     0% { 状态1; }
    25% { 状态2; }
    50% { 状态3; }
    75% { 状态4; }
   100% { 状态5; }
}

代码示例

@keyframes rotaty {
  from {transform:rotate(0deg);}
    to {transform:rotate(360deg);}
}

(2) 配置动画
animation : 动画名称 过渡时间 过渡方式 延时 次数 播放方向

.taiji {
  position: relative;
  width: 200px;
  height:200px;
  animation:  rotaty 1s linear 1s infinite reverse ;
}
无限旋转的太极

资料来源:饥人谷,MDN

上一篇 下一篇

猜你喜欢

热点阅读