web前端最佳化之reflow(減少頁面的迴流)

來源:互聯網
上載者:User

標籤:read   abs   text   put   文檔   操作dom   頁面   css偽類   ext   

1、什麼是reflow?

reflow(迴流)是指瀏覽器為了重新渲染部分或者全部的文檔,重新計算文檔中的元素的位置和幾何構造的過程。

因為迴流可能導致整個Dom樹的重新構造,所以是效能的一大殺手。

 

以下操作會引起迴流:

① 改變視窗大小

② font-size大小改變

③ 增加或者移除樣式表

④ 內容變化(input中輸入文字會導致)

⑤ 啟用CSS偽類(:hover)

⑥ 操作class屬性,新增或者減少

⑦ js操作dom

⑧ offset相關屬性計算

⑨ 設定style的值

......

reflow與repaint是減緩js的幾大主要原因,尤其是reflow更是效能殺手,所以我們應該想法避免。

 

<style type="text/css">     .changeStyle { width: 100px; height: 100px; }</style><script type="text/javascript">     $(document).ready(function () {         var el = $(‘id‘);         //1         el.css(‘width‘, ‘100px‘);         el.css(‘height‘, ‘100px‘);         //2         el.css({ ‘width‘: ‘100px;‘, ‘height‘: ‘100px;‘ });         //3          el.addClass(‘changeStyle‘);      });</script>

推薦第三種,避免第一種

以上幾種做法,我這裡弱弱的推薦第三種,避免第一種。

② 具有動畫效果請使用absolute

因為absolute元素的改變對其它元素的迴流影響不大,所以我們的動畫效果的元素還是將他搞成absolute吧。

③ 避免使用表格版面配置(記住只是布局哦,我們資料還是應該用表格的)

④ 請絕對不要使用CSS運算式,效能殺手啊,特別是IE

⑤ 在最末改變元素

因為迴流是自上而下的,所以下不及上,我們在最後面修改資訊對全域影響越少。

⑥ 動畫移動時候,要控制

比如我們拖動元素時候,我是在他x或者y座標改變5px才操作,這樣雖說降低了平滑度,但是對效能有提高。

web前端最佳化之reflow(減少頁面的迴流)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.