请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问老师关于重绘

图片描述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .div {
      width: 200px;
      height: 200px;
      background-color: blue;
    }
  </style>
</head>
<body>
  <div id="app" class="div">
    
  </div>
  <script>
    const app = document.getElementById('app')
    app.onclick = () => {
      app.style.willChange = 'transform'
      app.style.transform = 'translateX(100px)'
    }
  </script>
</body>
</html>

老师这段代码很简单,点击触发改变元素位移。
按照老师课程中讲的,它不应该有paint的过程把。可是查看的确出现了paint发生了重新绘制。以及我查看layout点击动画帧发现layout是空。并不存在任何一个图层。请问老师这是为什么

正在回答

2回答

同学你好!

你运行的环境没有GPU吗?是headless的docker吗?willChange是依赖GPU进行性能提升。可以看一下我本地运行你代码的效果:
//img1.sycdn.imooc.com/szimg/6016c22609cb6b4d18661910.jpg


另外要注意一下,虽然你这个例子不会,但是通常不要在全局设置willChange,会导致子元素过度生成独立的复合图层,过度消耗资源。


还有一个可能是你的浏览器设置没有开启硬件加速:

https://img1.sycdn.imooc.com/szimg/6016c435093ab71f27241356.jpg

0 回复 有任何疑惑可以回复我~
  • 提问者 hy_wang #1
    老师我回复您了,给您我的截图。的确layout是空,而且莫名奇妙出现mouseover事件从而进行了paint
    回复 有任何疑惑可以回复我~ 2021-01-31 22:54:16
  • 提问者 hy_wang #2
    老师我的确也开启了硬件加速
    回复 有任何疑惑可以回复我~ 2021-01-31 23:00:19
  • Mr_Max 回复 提问者 hy_wang #3
    你运行的环境有GPU吗?
    回复 有任何疑惑可以回复我~ 2021-02-02 02:09:31
提问者 hy_wang 2021-01-31 22:54:50

https://img1.sycdn.imooc.com//szimg/6016c4ac09ea5ab535761558.jpg

老师这是我的运行图

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号