面的兩個問題還是比較常問到的, 希望大家能夠好好的記憶一下。
1-1. 回流 的核心概念:
1. 當(dāng) render Tree 中的一部分(或者全部) 因元素的 規(guī)模尺寸 、 布局 、 隱藏 等改變而需要重新構(gòu)建, 這就稱為回流 。
2. 當(dāng)頁面 布局和集合屬性 改變時就需要回流 。
1-2. 回流詳細(xì)解析:
1. 回流更多的是涉及到頁面元素大小的變化, 尺寸的變化, 布局的變化, 這些核心概念變化的時候, 會觸發(fā)回流 。
2. 實例: 網(wǎng)站的懶加載, 在下滑的時候會有圖片增加到我們的 dom Tree 上, 這就是典型的一種 Render Tree 在動態(tài)過程中它的布局改變 。
3. 實例: 對圖片做一些特殊的效果, 如鼠標(biāo)放上變大, 這種場景圖片大小的變化, 也是會觸發(fā)回流的 。
2-1. 重繪的核心概念:
1. 當(dāng) render Tree 中的一些元素需要更新屬性, 而這些屬性只是影響元素的外觀, 風(fēng)格, 而不會影響布局, 比如 background-color, 這就是重繪 。
2-2. 重繪詳細(xì)解析:
1. 涉及重繪的時候, 不一定觸發(fā)回流; 回流是一定會觸發(fā)重繪的
3. 重繪與回流這些與瀏覽器本身也是有關(guān)系的 。
1. 不同的瀏覽器渲染機(jī)制不一樣, 重繪與回流發(fā)生的情況也不一樣。
1. 觸發(fā)頁面重新布局的屬性:
1. 盒模型相關(guān)的屬性會觸發(fā)重新布局 。
1. width
2. height
3. padding
4. margin
5. display
6. boeder-width
7. border
8. min-height
2. 定位屬性以及浮動也會觸發(fā)重新布局 。
1. top
2. bottom
3. left
4. right
5. position
6. float
7. clear
3. 改變節(jié)點內(nèi)部文字結(jié)構(gòu)也會觸發(fā)重新布局 。
1. text-algin
2. overflow-y 規(guī)定是否對內(nèi)容的上/下邊緣進(jìn)行裁剪 - 如果溢出元素內(nèi)容區(qū)域的話/ 滾輪
3. font-weight
4. overflow
5. font-family
6. line-height
7. vertival-algin 設(shè)置元素的垂直對齊方式
8. white-space 設(shè)置如何處理元素內(nèi)的空白
9. font-size
1. 那些 CSS 屬性會觸發(fā)重繪(只會觸發(fā)重繪不會觸發(fā)回流)?
1. color
2. border-style
3. border-radius
4. visibility 規(guī)定元素是否可見
5. text-decoration 規(guī)定添加到文本的修飾
6. background
7. background-image
8. background-position
9. background-repeat
10. background-size
11. outline-color
12. outline
13. outline-style
14. outline-width 設(shè)置元素整個輪廓的寬度
15. box-shadow 陰影
這里就是一些概念性的內(nèi)容與需要加深記憶的內(nèi)容, 最好的方法就是每天都來看一遍。
之前有整理過部分知識點, 現(xiàn)在將整理的相關(guān)內(nèi)容, 驗證之后慢慢分享給大家; 這個專題是 "前端面試題" 的相關(guān)專欄; 大概會有200+的文章。
如果對大家有所幫助,可以點個關(guān)注、點個贊; 文章會持續(xù)打磨 。
有什么想要了解的前端知識, 可以在評論區(qū)留言, 會及時分享所相關(guān)內(nèi)容 。
種動態(tài)創(chuàng)建元素的區(qū)別
區(qū)別
1.document.write是直接將內(nèi)容寫入頁面的內(nèi)容流,但是文檔流執(zhí)行完畢,則它會導(dǎo)致頁面全部重繪
2.innerHTML是將內(nèi)容寫入某個DOM節(jié)點,不會導(dǎo)致頁面全部重繪
3.innerHTML創(chuàng)建多個元素效率更高(不要拼接字符串,采取數(shù)組形式拼接),結(jié)構(gòu)稍微復(fù)雜(innerHTML采取數(shù)組形式拼接會快一點比createElement()快)
4.createElement()創(chuàng)建多個元素效率稍低一點點,但是結(jié)構(gòu)更清晰
總結(jié):不同瀏覽器下,innerHTML效率要比creatElement高
動態(tài)生成表格案例分析
2.所有的數(shù)據(jù)都是放到tbody里面的行里面。
3.因為行很多,我們需要循環(huán)創(chuàng)建多個行(對應(yīng)多少人)
源碼如下
效果圖如下
網(wǎng)站建設(shè)中關(guān)于技術(shù)問題主要可以分形兩部分,一般都是由專業(yè)的技術(shù)人員來負(fù)責(zé)完成,其中一部分是網(wǎng)站后臺的技術(shù)開發(fā),主要負(fù)責(zé)的是網(wǎng)站的后臺系統(tǒng)開發(fā)問題;另一部分就是網(wǎng)站的前端技術(shù)開發(fā),主要負(fù)責(zé)的是網(wǎng)頁前端Web開發(fā)的問題。這兩大塊兒技術(shù)問題解決的好否是企業(yè)能否獲得一個優(yōu)秀網(wǎng)站的關(guān)鍵,本文中分形科技主要為大家介紹的是其中的前端開發(fā)技術(shù)。
首先,我們先來分析一下什么是前端開發(fā)
前端開發(fā)又稱Web前端開發(fā)技術(shù),以前叫做網(wǎng)頁制作,其主要職能就是把網(wǎng)站的界面更好地呈現(xiàn)給用戶。前端開發(fā)工程師通過運(yùn)用專門的技術(shù)軟件讓企業(yè)網(wǎng)站互聯(lián)網(wǎng)化,使靜態(tài)的頁面動態(tài)化。Web前端開發(fā)涵蓋的知識面非常廣,既有具體的技術(shù),又有抽象的理念。
其次,介紹一下前端開發(fā)技術(shù)人員需要掌握的專業(yè)技能
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,前端開發(fā)技術(shù)變更越來越成熟,市場對于前端開發(fā)技術(shù)人員的專業(yè)技能要求也越來越高,具體的技能主要包括:1、掌握HTML,2、服務(wù)器端腳本語言,3、CSS和JavaScript等。
在了解以上的重要知識后,分形科技小編再為大家介紹一下網(wǎng)站建設(shè)前端開發(fā)如何應(yīng)對瀏覽器的重繪和重排。瀏覽器重繪即repaint,瀏覽器的重排即reflows。重繪(repaint)是指一個元素外觀的改變所觸發(fā)的瀏覽器行為,瀏覽器會根據(jù)元素的新屬性進(jìn)行重新繪制,使網(wǎng)頁元素呈現(xiàn)出新的外觀。如改變vidibility、outline、背景色等屬性。特點:重繪不會帶來網(wǎng)頁的重新布局,并不一定伴隨重排。重排(reflows)是指網(wǎng)頁中元素更明顯的一種改變,可以理解為渲染樹進(jìn)行重新計算。因為瀏覽器重排比較復(fù)雜,所以,在這里分形科技重點要介紹的是瀏覽器重排的問題。
下面是分形科技為大家總結(jié)的一些常見可以觸發(fā)重排的操作(不同的瀏覽器的情況很有一些不同):
1、DOM(文檔對象模型)元素的幾何屬性發(fā)生變化時
當(dāng)網(wǎng)頁中DOM元素的幾何屬性變化時,渲染樹中的相關(guān)節(jié)點就會失效,瀏覽器會根據(jù)DOM元素的變化重建構(gòu)建渲染樹中失效的節(jié)點。隨之瑞來的就是重新繪制被重排的頁面。特點:瀏覽器重排一定會引起瀏覽器的重繪。
2、瀏覽器引擎因獲取某些屬性而觸發(fā)重排。
當(dāng)瀏覽器引擎獲取網(wǎng)頁中一些屬性時,瀏覽器為取得正確的值也會觸發(fā)重排,所以我們在在多次使用這些屬性值時應(yīng)進(jìn)行緩存。網(wǎng)站中可修改屬性包括:offsetTop、offsetLeft、 offsetWidth、offsetHeight、scrollTop、scrollLeft、scrollWidth、scrollHeight、clientTop、clientLeft、clientWidth、clientHeight、getComputedStyle() (currentStyle in IE)。
3、改變元素的樣式、調(diào)整窗口大小觸發(fā)重排
網(wǎng)站建設(shè)前端開發(fā)中,改變網(wǎng)頁中元元素的一些樣式,或是調(diào)整瀏覽器窗口大小都會觸發(fā)瀏覽器重排。避免方法:將網(wǎng)頁中需要多次重排的元素的position屬性設(shè)為absolute或fixed,這樣此元素就脫離了文檔流,不會影響到其他元素。
最后要提醒大家的是想要做好網(wǎng)站建設(shè)的前端開發(fā)就必須要在掌握專業(yè)技術(shù)的基礎(chǔ)上重視實踐的積累。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。