html文档页面重绘和重新布局

  当浏览器下载完所有页面HTML 标记,JavaScript,CSS,图片之后,它解析文件并创建两个内部数据结构:一棵DOM树表示页面结构,一棵渲染树表示DOM节点如何显示。

在对html页面的操作过程中会改变页面的结构或者页面的外观或者同时改变页面的结构和外观。在过程中,文档可见外观改变很小(如:改变了某些元素的颜色,或者改变了某些元素的可见性,但这种改变不会影响到页面的布局),这种行为称为“重绘”,也就是浏览器对文档进行了重新绘制。如果页面外观发生了显著变化并且影响到文档的实际布局(如一个<div>元素的大小发生了改变),这时浏览器将会进行重新布局,也就是浏览器将需要重新计算并重新绘制改div元素的所有子元素。

     重绘和重新布局都是非常耗性能的一种操作。发生重绘时不一定会发生重新布局,但发生重新布局一定会发生重绘。那么哪些页面的操作会发生重绘与重新布局呢。

   正如前面所提到的,当布局和几何改变时需要重新布局。在下述情况中会发生重新布局:
      (1)添加或删除可见的DOM 元素
      (2)元素位置改变
      (3)元素尺寸改变(因为边距,填充,边框宽度,宽度,高度等属性改变)
      (4)内容改变,例如,文本改变或图片被另一个不同尺寸的所替代最初的页面渲染
      (5)浏览器窗口改变尺寸

  在使用javascript对页面的操作时会发生重绘或者重新布局,虽然不能避免这2种行为,但可以减少触发这两种行为的发生。如:

     div.style.width='200px',

     div.style.height='300px',

     div.style.color='#FFF',

     div.style.fontSize='16px'

    这样浏览器会对页面进行4次计算与绘制,

  我们可以把这些改变放到一个类里面,如:

    .change{width:200px;height:300px;color:#FFF;font-size:16px;}

 然后将div的类设置为change

   div.class='change'

 这样浏览器对页面的计算和绘制就减少到一次了.

有时会给页面添加多个节点时,有可能触发多次重新布局文档的操作。如:

   var i=0;

  for(;i<10;i++){

        var newP=document.createElement('p'),

             newText='new p elements ---'+i;

        newP.innerText=newText;

       document.body.appendChild(newP);       

  }

这会触发10重新布局。这时使用文档片段就会将重新布局减少到一次。如:

   

 var i=0,pFragment=document.createDocumentFragment();

  for(;i<10;i++){

        var newP=document.createElement('p'),

             newText='new p elements ---'+i;

        newP.innerText=newText;

       pFragment.appendChild(newP);    

  }

  document.body.appendChild(pFragment);

  javascript对文档性能的影响主要都是在对DOM的操作上。

转载于:https://www.cnblogs.com/gb2013-shangduoduo/p/3841814.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值