总体上来说,操作DOM对象时,会触发浏览器的布局(layout) 和 绘制(paint) 行为,这两个罪魁祸首会导致DOM卡慢,占用内存较高等,从而影响用户体验。

浏览器渲染引擎工作流程


  1. 创建DOM树 HTML分析器,分析HTML元素,构建一颗DOM树
  2. 创建StyleRules CSS分析器,分析CSS文件,构建Rules树
  3. 创建Render树 将DOM树和Rules树关联起来,构建一颗Render树
  4. 布局Layout 分析布局信息,计算坐标位置
  5. 绘制Painting 开始绘制

这几个工作流程并不会严格遵循先后顺序,而是有可能出现同时进行。


为什么会卡顿?


当你在使用操作JQuery操作DOM时,可能轻松写出几句影响布局(layout) 的语句,比如获取需要的DOM属性、添加或删除DOM元素、改变浏览器窗口大小、修改DOM某些元素样式等等。这些操作指令一旦发出,浏览器就不得不提前执行layout,或者重复执行多次操作,尽管前几次的操作可能是白白浪费的无用功
所以说,使用虚拟DOM(VDOM)映射成实际DOM来进行DOM操作,或使用CSS动画来替代DOM动画,会大大减少页面重绘。使得性能更加完善。


关注我,不后悔!

为什么说DOM操作是昂贵的相关推荐

  1. DOM操作总结  (。♥ᴗ♥。) 哇!!

    知识点 DOM 本质 DOM 节点操作 DOM 结构操作 DOM 性能 前言 各种框架层出不穷,但DOM操作一直都会是前端工程师的基础,必备知识. 只会Vue和React等框架,而不懂DOM操作的前端 ...

  2. js hover 触发事件_为什么说JS的DOM操作很耗性能

    想问这样的问题,其实是自己心中没有个谱,一直用 js 计算性能来衡量 浏览器dom 操作性能.js性能和浏览器性能其实是两码事. 这个问题很抽象,它里面涉及挺多个小的知识点. 重申一点,js 操作 D ...

  3. 原生js循环展示dom_为什么说JS的DOM操作很耗性能

    想问这样的问题,其实是自己心中没有个谱,一直用 js 计算性能来衡量 浏览器dom 操作性能.js性能和浏览器性能其实是两码事. 这个问题很抽象,它里面涉及挺多个小的知识点. 重申一点,js 操作 D ...

  4. 为什么DOM操作很慢

    转自:http://kb.cnblogs.com/page/534571/ 一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大家都会这样说,在网上学习了一些资料,这边整理出来 ...

  5. jQuery 学习笔记一(认识jQuery jQuery选择器 jQuery中的DOM操作)

    第一章 认识jQuery jQuery代码风格 $(document).ready(function(){ //... }); 简化 $(function(){ //... }); jQuery对象转 ...

  6. 03-老马jQuery教程-DOM操作(上)

    jQuery DOM操作 在没有jQuery之前,DOM的操作相对来说有点麻烦,尤其是DOM节点的搜索.目前我们已经学习了jQuery的选择器,接下带大家一块学习jQuery的DOM操作,jQuery ...

  7. Jquery基础之DOM操作

    Jquery基础之DOM操作 Dom是Document Object Model的缩写,意思是文档对象模型.DOM是一种与浏览器.平台.语言无关的接口,使用该接口可以轻松访问页面中所有的标准组件.DO ...

  8. DOM操作之属性和样式操作

    在DOM操作,除了前面的节点操作以外,常常被用到的操作还有属性操作和节点操作,下面,主要来总结一下jQuery中的属性操作方法和样式操作方法. 在开始操作前,我们需要先在html中添加如下代码,后面所 ...

  9. pyV8不支持dom操作,关于PyV8的支持DOM的疑问

    pyV8不支持dom操作,关于PyV8的支持DOM的疑问 PYV8只支持纯js语句.不过官方提供了w3c.py以及brower.py,可以基于此来完成,但这个用起来还是比较麻烦. 在爬取网站时,需要提 ...

最新文章

  1. Git 工作流的正确打开方式
  2. 004_Gson树模型
  3. Ubuntu terminal路径太深,名字太长
  4. OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co
  5. 吴恩达《优化深度神经网络》精炼笔记(3)-- 超参数调试、Batch正则化和编程框架...
  6. jsp页面页面post传值_几种JSP页面传值方式
  7. extjs5(05--主界面上加入顶部和底部区域)
  8. 带你走近AngularJS - 基本功能介绍
  9. 最初语音识别率只有60%,如今坐拥5亿用户,这款AI产品是怎么做到的?
  10. 团队协调办公工具比较
  11. 进程部分(IPC机制及生产者消费者模型)和线程部分
  12. 面试硬核干货:纯CSS实现垂直居中,快来收藏吧
  13. matlab线性代数对角化,工程线性代数(MATLAB版) (2007年7月)
  14. SQL 数据库 学习 011 关系、一对一、一对多、多对多
  15. ele.getBoundingClientRect()使用
  16. 全新UI众人帮任务帮PHP源码 悬赏任务抖音快手头条点赞源码 带三级分销可封装小程序
  17. 取得平均薪水最高的部门的部门名称
  18. 令人拍案叫绝的Wasserstein GAN(转载)
  19. 系统分析与设计个人总结
  20. EPR测试常见问题解答

热门文章

  1. Pandas之文件读取与存储
  2. Delong test
  3. 小型水库雨水情测报及大坝安全监测系统
  4. HDCP的key交互
  5. vue的axios详解
  6. Throwing Star LAN Tap与专业流量复制器对比
  7. wordpress 外部数据接口_在WordPress中开发API接口
  8. R语言中导入java中_R语言直接调用Java代码
  9. Chocolatey 食用说明
  10. 关于STM32软硬件兼容性相关的知识