<option id="mwy0y"><strong id="mwy0y"></strong></option>
  • <ul id="mwy0y"><sup id="mwy0y"></sup></ul>
  • <ul id="mwy0y"></ul>
  • <del id="mwy0y"><dfn id="mwy0y"></dfn></del><ul id="mwy0y"><sup id="mwy0y"></sup></ul>
  • <abbr id="mwy0y"></abbr>

    千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

    400-811-9990
    手機(jī)站
    千鋒教育

    千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

    千鋒教育

    掃一掃進(jìn)入千鋒手機(jī)站

    領(lǐng)取全套視頻
    千鋒教育

    關(guān)注千鋒學(xué)習(xí)站小程序
    隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

    上海
    • 北京
    • 鄭州
    • 武漢
    • 成都
    • 西安
    • 沈陽(yáng)
    • 廣州
    • 南京
    • 深圳
    • 大連
    • 青島
    • 杭州
    • 重慶
    當(dāng)前位置:長(zhǎng)沙千鋒IT培訓(xùn)  >  技術(shù)要點(diǎn)  >  千鋒長(zhǎng)沙前端培訓(xùn)分享之web前端的回流和重繪

    千鋒長(zhǎng)沙前端培訓(xùn)分享之web前端的回流和重繪

    來(lái)源:千鋒教育
    發(fā)布人:千鋒長(zhǎng)沙
    時(shí)間: 2022-01-20 16:33:08

           今天我們?yōu)榇蠹医榻B一下web前端中涉及到的回流和重繪的概念,先來(lái)看一下官方給出的定義:

    src=http___www.situedu.com_ueditor_php_upload_image_20210825_1629857076579896.jpg&refer=http___www.situedu

           回流(reflow):對(duì)于DOM結(jié)構(gòu)中的各個(gè)元素都有自己的盒子模型,這些都需要瀏覽器根據(jù)各種樣式(瀏覽器的、開(kāi)發(fā)人員定義的等)來(lái)計(jì)算并根據(jù)計(jì)算結(jié)果將元素放到它該出現(xiàn)的位置,這個(gè)過(guò)程稱之為reflow ;

           重繪(repaint):當(dāng)各種盒子的位置、大小以及其他屬性,例如顏色、字體大小等都確定下來(lái)后,瀏覽器于是便把這些元素都按照各自的特性繪制了一遍,于是頁(yè)面的內(nèi)容出現(xiàn)了,這個(gè)過(guò)程稱之為repaint。

           這是什么?我是誰(shuí)?我在哪兒?其實(shí)簡(jiǎn)單的說(shuō):回流(reflow)就是元素的位置發(fā)生了改變(不管是添加、刪除元素,還是元素尺寸改變),會(huì)觸發(fā)回流。比如,這里有2個(gè)p標(biāo)簽,我們想在兩個(gè)p標(biāo)簽之間插入另外一個(gè)p標(biāo)簽這個(gè)時(shí)候老大還是老大,插入一個(gè)新老二之后,原來(lái)的老二變成了老三,位置發(fā)生了改變會(huì)觸發(fā)回流。那么重繪(repaint)簡(jiǎn)單的說(shuō),元素位置不會(huì)發(fā)生改變,視覺(jué)效果會(huì)有所改變。

           元素的位置沒(méi)有發(fā)生改變,只有文字顏色做了修改,這個(gè)時(shí)候就發(fā)生了重繪。知道了回流和重繪,我們?cè)谧鲰?xiàng)目的過(guò)程中,要盡量避免,這樣可以使我們寫(xiě)出高性能的DOM。例如:我們?cè)诮o元素添加樣式修飾時(shí),避免一條條更改

    <div id="person">我是一個(gè)工具人</div>

    <script>

    var person = document.getElementById('person');

    //不要逐條更改

    person.style.width = 300 + 'px';

    person.style.height = 200 + 'px';

    person.style.backgroundColor = 'red';

    person.style.fontSize = 20 + 'px';

    person.style.color = 'green';

    </script>

    可以將修飾放入一個(gè)class名中,做一次class名插入

    <style>

    .person_style{

    width: 300px;

    height: 200px;

    background-color: red;

    font-size: 20px;

    color: green;

    }

    </style>

    <script>

    var person = document.getElementById('person');

    person.classList.add('person_style')

    </script>

    還有我們要循環(huán)插入很多DOM元素時(shí),可以使用documentFragment

    <script>

    //創(chuàng)建DocumentFragment

    var fragment = document.createDocumentFragment();

    //把DOM元素添加到fragment

    var oDiv = document.createElement('div');

    for(let i = 0; i < 10; i++){

    oDiv.innerHTML += "number:" + i + '<br>';

    fragment.appendChild(oDiv)

    }

    //最后把fragment插入到頁(yè)面

    document.body.appendChild(fragment)

    </script>

    聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。

    猜你喜歡LIKE

    最新文章NEW

    相關(guān)推薦HOT

    更多>>

    快速通道 更多>>

    最新開(kāi)班信息 更多>>

    網(wǎng)友熱搜 更多>>