页面加载和重绘重排

输入url到页面加载经历了什么

1.在浏览器地址中输入url;
2.浏览器在查看是否有浏览器缓存-系统缓存-路由缓存,如果缓存中有,直接显示在页面中;如果没有,则进入下一步;
3.进行DNS(域名)解析,获取相应的IP地址;
4.浏览器向服务器发起tcp连接请求,进行tcp三次握手
5.浏览器像服务器发送http请求,请求数据包
6.服务器处理请求,将数据返回至浏览器;
7.浏览器接收到http响应
8.读取页面内容、浏览器渲染、解析html源码;
9.生成Dom树,解析样式并交互(css+js);
10.ajax

重绘和重排

  • 概念
    重绘(repaint):一个元素外观的改变出发的浏览器行为。
    重排(reflow):渲染树进行重新计算。
  • 原因
    repaint:改变visibility、outline、背景色、文字颜色等属性。浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。
    reflow:
    ①页面初始化的时候;
    ②操作Dom元素时(节点的增减和移动);
    ③某些元素尺寸的改变;
    ④获取某些属性~-~当获取一些属性时,浏览器为取得正确的值也会触发重排(offsetTop、offsetLeft、 offsetWidth、offsetHeight、scrollTop、scrollLeft、scrollWidth、scrollHeight、clientTop、clientLeft、clientWidth、clientHeight)。
  • 减少repaint和reflow
    1.将多次改变样式属性的操作合并成一次操作;
    2.将需要多次重排的元素,position属性设置为absolute或fixed,元素脱离文档流,它的变化不会影响到其他元素;
    3.在内存中多次操作节点,完成后再添加到文档中去。例如要异步获取表格数据,渲染到页面。可以先取得数据后在内存中构建整个表格的html片段,再一次性添加到文档中去,而不是循环添加每一行;
    4.由于display属性为none的元素不在渲染树中,对隐藏的元素操作不会引发其他元素的重排。如果要对一个元素进行复杂的操作时,可以先隐藏它,操作完成后再显示。这样只在隐藏和显示时触发2次重排;
    5.在需要经常获取引起浏览器重排的属性值时,要缓存到变量。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值