码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 重绘、重排区别以及如何避免


    clientTop、scrollTop、offsetTop详解

    一、 重排、重绘

    1-1 重排

    1、 概念: 当渲染树的一部分必须更新并且节点的尺寸发生变化,浏览器会使渲染树中受到影响的部分失效,并重新构建渲染树
    2、 引发重排:

    • 添加、删除可见的dom
    • 元素的位置改变
    • 元素的尺寸改变(外边距。内边距、边框厚度、宽高等几何属性)
    • 页面渲染初始化
    • 浏览器窗口尺寸改变
    • 获取某些属性。当获取一些属性时,浏览器为取得正确的值也会触发重排,会导致队列刷新
      • 属性包括:offsetTop,offsetLeft,offsetWidth,offsetHeight
        scrollTop,scrollLeft,scroolWidth,scrollHeight
        clientTop,clientLeft,clientWidth,clentHeight
        getComputedStyle()
      • 使用这些值时应进行缓存.

    1-2 重绘

    1、 在一个元素的外观被改变所触发的浏览器行为,浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。
    2、 例如: 改变某个元素的背景色、文字颜色、边框颜色等

    1-3 区别:

    重绘不一定需要重排,重排必然导致重绘(比如改变网页位置)

    二、 减少及优化reflow/repaint

    2-1 浏览器自己的优化

    1. 浏览器会维护1个队列,把所有引起重排、重绘的操作放在这个队列中,等队列中的操作到一定数量或者到一定时间间隔,浏览器就会flush队列,进行一批处理

      • 多次重排重绘就会变成一次重排重绘
    2. 减少reflow/repaint:

      • 不要一条一条修改DOM的样式,可以先定义好css的class,然后修改DOM的className

      • 不要把DOM结点的属性值放在一个循环里当成循环里的变量

      • 为动画的HTML元件使用fixed或absolute的position,那么修改他们的css是不会reflow的。

      • 千万不要使用table布局.很小的一个改动就会造成整个table的重新布局

        • table及其内部元素除外,它可能需要多次计算才能确定好其在渲染树中节点的属性,通常要花3倍于同等元素的时间。这也是为什么我们要避免使用table做布局的一个原因。)
      • 不要在布局信息改变的时候做查询(会导致渲染队列强制刷新)

  • 相关阅读:
    sysbench
    通过PLC网关如何实现三菱FX3U的远程上下载程序?
    安全组问题 访问华为云服务器端口
    女生学Java好找工作吗?女生适合编程吗?
    JavaEE初阶(5)多线程案例(定时器、标准库中的定时器、实现定时器、线程池、标准库中的线程池、实现线程池)
    “蔚来杯“2022牛客暑期多校训练营4-N、K、D(待补)、H
    光谱异常样本检测分析
    (尚硅谷)JavaWeb新版教程10-书城项目的实现(第二部分)
    海外版外卖系统,目前国外都有哪些呢?
    2-4 ajax请求后台验证码数据返回到前端html页面
  • 原文地址:https://blog.csdn.net/hannah2233/article/details/125915095
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号