为什么css中transform的效率高、什么是包含块

为什么transform的效率高?

因为transform既不会影响布局也不会影响绘制指令,它影响的只是渲染进程的最后一个draw阶段

由于draw阶段在合成线程中,所以transfrom的变化几乎不会影响渲染主线程,反之,渲染主线程无论如何忙碌,也不会影响transform的变化,因为其只改变cssom树和执行draw

甚至如果使用animation,cssom树都不会变,只执行draw

包含块:

在CSS中,包含块(containing block)是指一个元素的布局上下文,它影响了该元素的定位和尺寸计算。包含块可以是一个元素自身,也可以是它的父元素或祖先元素。

元素的定位和尺寸计算通常是相对于其包含块进行的。下面是一些常见的包含块情况:

  1. 对于普通流定位的元素,其包含块是最近的块级祖先元素(block-level ancestor),它可以是父元素或更高层级的祖先元素。

  2. 对于绝对定位的元素,其包含块通常是最近的具有定位属性(position属性值为relative、absolute、fixed或sticky)的祖 先元素。

  3. 对于固定定位的元素,其包含块是视口(viewport)。

  4. 对于浮动元素,其包含块是最近的块级祖先元素或包含浮动元素的内联级祖先元素。