2019独角兽企业重金招聘Python工程师标准>>>

以前在写网页的时候很少关注到网站的性能,时间进入今天,一个网站不在是单纯几张图片或者几段文字,组成一个网站,今天的用户更加注重网站体验,所以写一个页面的时候网站的性能优化变得格外重要,作为一个前端的开发人员,一定的要对网站的每一个页面做到最大性能优化,今天的学习了一下如果提高网站性能重要的知识:

回流与重绘

----------------------------------------让你的网页快点在快点-----------------------------------------------

html中的每个tag都是dom 树中的1个节点,document(根节点)。

回流:

当视图中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建。这就叫着回流(也可以叫做重新布局)

重绘:

当视图中的有些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,就叫着重绘

这里提到重要的一点: 回流一定会重绘,而重绘未必回流。

会产生回流或者重绘的操作:

1、添加、删除元素(回流+重绘)

2、隐藏元素 display:none,(回流+重绘),visibility:hidden(重绘,不回流)

3、移动元素:改变top,left,或者移动元素到另外1个父元素中(重绘+回流)

4、对style的操作()

5、改变浏览器的大小(回流+重绘)

浏览器在处理回流和重绘的时候,会把所有的引起回流、重绘的操作放入一个队列里面,一定数量或者时间间隔就会flush对象,这样就会让多次的回流、重绘变成一次回流重绘

减少回流、重绘

1.不要改变一个元素的样式属性,最后直接改变类名,类名是预先定义好的样式,不是动态的,你要动态的改变一些样式,可以使用字符串拼接形式进行改变

示例:

// 不好的写法
var left = 1;var top = 1;
el.style.left = left + "px";
el.style.top  = top  + "px";// 比较好的写法 
el.className += " className1";// 比较好的写法 
el.style.cssText += "; left: " + left + "px; top: " + top + "px;";

2.让要操作的元素的进行“离线处理”,

3.不要经常访问会引起浏览器fiush队列的属性,如果确实要访问,可以先对变量进行缓存,应聘哪的时候就可以直接读取变量

示例:

// 别这样写,大哥
for(循环) {
    el.style.left = el.offsetLeft + 5 + "px";
    el.style.top  = el.offsetTop  + 5 + "px";
}// 这样写好点
var left = el.offsetLeft,top  = el.offsetTop,s = el.style;for(循环) {
    left += 10;
    top  += 10;
    s.left = left + "px";
    s.top  = top  + "px";
}

4.一定要思考清除,操纵元素会影响到多少个节点,尽量减少对节点的影响,影响越多,就越耗费资源、

转载于:https://my.oschina.net/u/1403169/blog/202440

提高网站的性能----回流与重绘相关推荐

  1. 前端性能优化—回流与重绘

    前端性能优化-回流与重绘 一.回流 当渲染树中部分或者全部元素的尺寸.结构或者属性发生变化时,浏览器会重新渲染部分或者全部文档的过程就称为回流. 下面这些操作会导致回流: 页面的首次渲染 浏览器的窗口 ...

  2. 性能优化之回流_重绘

    回流与重绘 当render树中的元素发生尺寸.布局.隐藏等变化时就需要重新构建.当页面布局和几何属性发生变化时就需要回流. 当render树中的一些元素更新属性,而属性只是影响外观风格时,不会影响布局 ...

  3. 浏览器渲染页面的原理、回流、重绘

    目录 一.浏览器的渲染过程 1.面试题 (1).DNS 域名解析 (2).建立 TCP 连接 (3).发送 HTTP 请求 (4).处理请求返回的 HTTP 响应 (5).页面渲染 (6).关闭 TC ...

  4. javascript --- [读书笔记] 回流与重绘 前端优化小结

    1. 浏览器渲染原理 请说出: 从用户在浏览器地址输入网址,到看整个页面,中间都发生了哪些事情? HTTP请求阶段 HTTP响应阶段 浏览器渲染阶段 1.1 可能用到的知识 1.1.1 进程 Proc ...

  5. android 重绘如何能不闪一下屏幕_回流和重绘

    浏览器的渲染过程 本文先从浏览器的渲染过程来从头到尾的讲解一下回流重绘,如果大家想直接看如何减少回流和重绘,优化性能,可以跳到后面.(这个渲染过程来自MDN) 从上面这个图上,我们可以看到,浏览器渲染 ...

  6. 前端面试中浏览器相关问题(二):回流与重绘

    前端面试中浏览器相关问题(二):回流与重绘 文章目录 前端面试中浏览器相关问题(二):回流与重绘 浏览器的渲染过程 生成渲染树 回流 重绘 何时发生回流重绘 浏览器的优化机制 减少回流和重绘 最小化重 ...

  7. 页面渲染之回流与重绘讲解

    文章目录 浏览器的渲染过程 生成渲染树(Render Tree) 回流(Layout或Reflow) 重绘(Painting) 何时发生回流重绘 浏览器的优化机制 减少回流和重绘 合并样式的修改 批量 ...

  8. 回流和重绘的介绍以及优化方法

    文章目录 一.浏览器的渲染机制 1.生成渲染树的过程 二.回流和重绘 1.回流(reflow) 2.重绘(repaint) 3.何时发生回流.重绘 三.减少回流和重绘 1.浏览器的优化机制 2.使用浏 ...

  9. 浏览器的回流与重绘 (Reflow Repaint)

    参考<极客学院--浏览器工作原理与实践> 渲染流程大致可总结为如下: 1. 渲染进程将 HTML 内容转换为能够读懂的 DOM 树结构. 2. 渲染进程将 CSS 样式表转化为浏览器可以理 ...

最新文章

  1. 连接统计学、机器学习与自动推理的新兴交叉领域——因果科学读书会再起航...
  2. 算法---字符串去重
  3. python提取图像的每一帧
  4. 图像处理:像素间的基本关系
  5. Mips TLB miss异常
  6. 最优化课程(part1)
  7. Deep Learning运行所需的硬件配置(转)
  8. 当你「ping 一下」的时候,你知道它背后的逻辑吗
  9. java求期望_Java 11的期望
  10. oracle正则匹配全部,sql – 返回Oracle中正则表达式的所有匹配项
  11. 互联网日报 | 理想汽车交付量突破30000辆;美团王慧文正式退休;寺库打造首个奢侈品直播基地...
  12. 计算机工作操作中一些问题,计算机二级考试中操作题常见问题之[电子表格]
  13. eax ...edi esp ebp寄存器简介(转)
  14. sql2012 ssrs_您必须在SQL Server Reporting Services(SSRS)中记录的十件事
  15. 实现基于内核栈切换的进程切换-linux011
  16. 【三维路径规划】基于matlab改进粒子滤波无人机三维路径规划【含Matlab源码 1269期】
  17. mysql 只显示箭头_为什么在DOS窗口中使用MySQL时,输入命令后只出现一个箭头,输入什么内容都是这样?...
  18. renpy 如何执行2个action_可执行的网络推广方案如何策划 8个维度 学会了策划方案不求人...
  19. 18650锂电池充电方案及保护板电路构思
  20. python小工具—图片拼接PDF

热门文章

  1. 走进移动支付:开启物联网时代的商务之门
  2. java语言如何跳转界面_在java中spring mvc页面如何跳转,详细图解
  3. explain分析执行计划
  4. SpringSecurity 认证通过后显示当前认证用户名
  5. SpringSecurity的csrf防护措施
  6. 缓冲池Buffer Pool
  7. Redis中的主从复制的不足
  8. 元组-元组和格式化字符串
  9. spring事务管理-概念部分
  10. 把随机数对象暴露给window成为全局对象 原型及原型链 原型的指向是否可以改变