当前位置: 首页 > news >正文

css 的渲染层合成是什么,浏览器如何创建新的渲染层

在 DOM 树中每个节点都会对应一个渲染对象(RenderObject),当它们的渲染对象处于相同的坐标空间(z 轴空间)时,就会形成一个 RenderLayers,也就是渲染层。渲染层将保证页面元素以正确的顺序堆叠,这时候就会出现层合成(composite),从而正确处理透明元素和重叠元素的显示。对于有位置重叠的元素的页面,这个过程尤其重要,因为一旦图层的合并顺序出错,将会导致元素显示异常。

浏览器如何创建新的渲染层?

  • 根元素 document
  • 有明确的定位属性(relative、fixed、sticky、absolute)
  • opacity < 1
  • 有 CSS fliter 属性
  • 有 CSS mask 属性
  • 有 CSS mix-blend-mode 属性且值不为 normal
  • 有 CSS transform 属性且值不为 none backface-visibility 属性为 hidden
  • 有 CSS reflection 属性
  • 有 CSS column-count 属性且值不为 auto 或者有 CSS column-width 属性且值不为 auto
  • 当前有对于 opacity、transform、fliter、backdrop-filter 应用动画
  • overflow 不为 visible

合成层(CompositingLayer)

满足某些特殊条件的渲染层,会被浏览器自动提升为合成层。合成层拥有单独的 GraphicsLayer,而其他不是合成层的渲染层,则和其第一个拥有 GraphicsLayer 的父层共用一个。

如何提升为合成层呢?

  • 3D transforms:translate3d、translateZ 等
  • video、canvas、iframe 等元素
  • 通过 Element.animate() 实现的 opacity 动画转换
  • 通过 СSS 动画实现的 opacity 动画转换
  • position: fixed
  • 具有 will-change 属性
  • 对 opacity、transform、fliter、backdropfilter 应用了 animation 或者 transition
http://www.lryc.cn/news/31090.html

相关文章:

  • nacos-sdk-rust binding to NodeJs
  • MySQL下载安装以及环境配置教程
  • 概率论 1.3 古典概型与几何概型
  • HTML DOM
  • Vue组件-$refs、$nextTick和name属性的使用
  • 【Spark】Spark的DataFrame向Impala写入数据异常及源码解析
  • 学习笔记-架构的演进之限流-3月day03
  • 动态规划 背包问题
  • C++ Primer Plus 学习笔记(四)—— 内存模型和名称空间
  • 详解基于 Celestia、Eclipse 构建的首个Layer3 链 Nautilus Chain
  • 列表与数组的转化
  • docker 运行花生壳实现内外网穿透
  • 操作系统——16.时间片轮转、优先级、多级反馈队列算法
  • Python3.8.8-Django3.2-Redis-连接池-数据类型-字符串-list-hashmap-命令行操作
  • Android kotlin 系列讲解(进阶篇)高级项目架构模式 - MVVM
  • 8. 查找
  • 二分查找算法
  • Git(3)之远程服务器
  • Javalin解构
  • yolov5算法,训练模型,模型检测
  • linux系统防火墙开放端口
  • CSAPP第九章 虚拟内存
  • numpy数组与矩阵运算(二)
  • Dubbo 中 Zookeeper 注册中心原理分析
  • 素数产生新的算法(由筛法减法改为增加法)--哥德巴赫猜想的第一次实际应用
  • 递归-需要满足三个条件
  • 【剑指Offer-Java】两个栈实现队列
  • Allegro如何将Waived掉的DRC显示或隐藏操作指导
  • MATLAB——数据及其运算
  • 【微信小程序】-- 页面导航 -- 声明式导航(二十二)