为了账号安全,请及时绑定邮箱和手机立即绑定

关于opacity触发paint的问题

关于opacity触发paint的问题

慕的地8271018 2019-02-05 19:53:36
<!DOCTYPE html><html lang="en"><head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>Document</title>     <style>         #react {            position: relative;            width: 100px;            height: 100px;            background-color: red;            opacity: 1;            transform: translateZ(0)         }    </style></head><body>     <div id="react"></div>     <script type="text/javascript">         setTimeout(() => {            document.getElementById("react").style.opacity = "0"         }, 2000);    </script></body></html>已经用translteZ提升为合成层,改变opacity仍然出触发paint这是为什么,和认知好像有点不符
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

透明度值的变化是不会引发 paint 的,但是从 opacity: 1; 到 opacity: 0; 不是数值变化那么简单,是有透明和没有透明的关系,这个差距可是很大的。你想想一下,假设页面没有 1 行 js 代码, 则 js 解析,执行这个过程完全不会发生,我们可以做优化,直接连 js 引擎都不加载。所有,从无到有和从 1到100之间的差距可不单单是数值的变化那么简单。

如果你一开始将 opacity 的初始值设为 0.9,然后在通过 js 改为 0,此时你就会发现 paint 事件消失了。


查看完整回答
反对 回复 2019-02-05
  • 1 回答
  • 0 关注
  • 1076 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信