渲染器渲染原理
浏览器渲染过程
- 根据html构建html树
- 根据css构建css树
- 将这两颗树合并成渲染树
- 在浏览器上进行layout布局(文档流、盒模型、位置大小。)
- 进行paint绘制(颜色、阴影进行描绘)
- 合成compose(根据层叠关系展示画面)
更新样式
一般采用js来更新样式
div.style.background = 'red'但是,不同的属性会触发不同的浏览器更新方式,常见三种更新方式

- 第一种,重新渲染
- 第二种,跳过layout
- 第三种,跳过layout和paint
想要知道什么属性会触发浏览器渲染的什么流程,可以使用这个网站: csstriggers.com/,这个网站把css常见的属性渲染流程全都实验过了。
css动画
常用的制作css动画的属性有两个:transform和 animation
transform属性
实现旋转(rotate),缩放(scale),倾斜(skew)或平移(transform)给定元素。
- rotate
transform: rotateX(10deg); //在x轴方向移动10度
transform: rotateY(10deg);
transform: rotateZ(10deg);一般用于制作加载的过程的旋转360的小组件- scale
transform: scale(2, 0.5);
transform: scaleX(2);
transform: scaleY(0.5);- 倾斜
transform: skew(30deg, 20deg);
transform: skewX(30deg);
transform: skewY(1.07rad);- 平移
transform: translate(12px, 50%);
transform: translateX(2em);
transform: translateY(3in);translate(-50%,-50%)可以做绝对定位元素的居中
left:50%;
transform:translateX(-50%); /*或者垂直方向居中*/
top:50%;
transform:translateY(-50%);
left:50%;
top:50%;
transform:(-50%,-50%);transition属性
如果需要动画效果,需要进行transition进行过渡,可以被指定为一个或多个 CSS 属性的过渡效果,多个属性之间用逗号进行分隔。
/* 要过渡的属性 | 持续时间 | 过渡的形式 | 延迟时间 */
transition: margin-right 4s ease-in-out 1s;- 常用过渡方式:linear ease ease-in ease-out step-start step-end steps
- 有些属性不能过渡
- display:none=>block没法过渡,不要使用这个过渡
- 改成visibility:hidden=>visible(记就行了,CSS没有为什么)
- background可以过渡
- opacity可以过渡,但是不推荐
animation属性
/* @keyframes duration | timing-function | delay |
iteration-count | direction | fill-mode | play-state | name */
animation: 3s ease-in 1s 2 reverse both paused slidein;@keyframes slidein {
from { transform: scaleX(0); }
to { transform: scaleX(1); }
}- 方向:reverse alternate alternate-reverse
- 次数:无限次是infinity
填充模式:none forwards backwards both
- 是否暂停:paused running