1.什么是盒子模型?
盒子模型有兩種,標(biāo)準(zhǔn)盒子模型和IE盒子模型。
標(biāo)準(zhǔn)盒子模型:width = content + padding + border + margin
IE盒子模型:content 包括了 padding 和 border
2.簡(jiǎn)述一下src與href的區(qū)別?
簡(jiǎn)要:
1.src 是指向物件的來(lái)源地址,是引入。在 img、script、iframe 等元素上使用。
2.href 是超文本引用,指向需要連結(jié)的地方,是與該頁(yè)面有關(guān)聯(lián)的,是引用。在 link和a 等元素上使用。
3.src通常用作“拿取”(引入),href 用作 "連結(jié)前往"(引用)。
詳細(xì):
href標(biāo)識(shí)超文本引用,用在link和a等元素上,href是引用和頁(yè)面關(guān)聯(lián),是在當(dāng)前元素和引用資源之間建立聯(lián)系。
src表示引用資源,表示替換當(dāng)前元素,用在img,script,iframe上,src是頁(yè)面內(nèi)容不可缺少的一部分。src是source的縮寫(xiě),是指向外部資源的位置,指向的內(nèi)部會(huì)遷入到文檔中當(dāng)前標(biāo)簽所在的位置;在請(qǐng)求src資源時(shí)會(huì)將其指向的資源下載并應(yīng)用到當(dāng)前文檔中,例如js腳本,img圖片和frame等元素。
如<script src = 'example.js'></script>當(dāng)瀏覽器解析到這一句的時(shí)候會(huì)暫停其他資源的下載和處理,直至將該資源加載,編譯,執(zhí)行完畢,圖片和框架等元素也是如此,類似于該元素所指向的資源嵌套如當(dāng)前標(biāo)簽內(nèi),這也是為什么要把js放在底部而不是頭部。
如<link href = 'common.css' rel = 'stylesheet'>當(dāng)瀏覽器解析到這一句的時(shí)候會(huì)識(shí)別該文檔為css文件,會(huì)下載并且不會(huì)停止對(duì)當(dāng)前文檔的處理,這也是為什么建議使用link方式來(lái)加載css而不是使用@import。
補(bǔ)充:link和@import的區(qū)別
區(qū)別1:link是XHTML標(biāo)簽,除了加載CSS外,還可以定義RSS等其他事務(wù);@import屬于CSS范疇,只能加載CSS。
區(qū)別2:link引用CSS時(shí),在頁(yè)面載入時(shí)同時(shí)加載;@import需要頁(yè)面網(wǎng)頁(yè)完全載入以后加載。
區(qū)別3:link是XHTML標(biāo)簽,無(wú)兼容問(wèn)題;@import是在CSS2.1提出的,低版本的瀏覽器不支持。
區(qū)別4:ink支持使用Javascript控制DOM去改變樣式;而@import不支持。
3.簡(jiǎn)述同步和異步的區(qū)別?
簡(jiǎn)單來(lái)說(shuō),可以改變程序正常執(zhí)行順序的操作就是異步操作。
SetTimeout 和 SetInterval 就是一種簡(jiǎn)單的異步函數(shù)。
所有任務(wù)可以分成兩種,一種是同步任務(wù),另一種是異步任務(wù)。同步任務(wù)指的是,在主線程上排隊(duì)執(zhí)行的任務(wù),只有前一個(gè)任務(wù)執(zhí)行完畢,才能執(zhí)行后一個(gè)任務(wù);異步任務(wù)指的是,不進(jìn)入主線程、而進(jìn)入“任務(wù)隊(duì)列”的任務(wù),只有等主線程任務(wù)執(zhí)行完畢,“任務(wù)隊(duì)列”開(kāi)始通知主線程,請(qǐng)求執(zhí)行任務(wù),該任務(wù)才會(huì)進(jìn)入主線程執(zhí)行。
異步運(yùn)行機(jī)制如下:
所有同步任務(wù)都在主線程上執(zhí)行,形成一個(gè)執(zhí)行棧。
主線程之外,還存在一個(gè)任務(wù)隊(duì)列。只要異步任務(wù)有了運(yùn)行結(jié)果,就在“任務(wù)隊(duì)列”中放置一個(gè)事件。
一旦“執(zhí)行棧”中的所有同步任務(wù)執(zhí)行完畢,系統(tǒng)就會(huì)讀取“任務(wù)隊(duì)列”,看看里面有哪些事件。那些對(duì)應(yīng)的異步任務(wù),于是結(jié)束等待裝袋,進(jìn)入執(zhí)行棧,開(kāi)始執(zhí)行。
主線程不斷重復(fù)以上三步。
4.怎樣添加、移除、移動(dòng)、復(fù)制、創(chuàng)建和查找節(jié)點(diǎn)?
(1)創(chuàng)建新節(jié)點(diǎn)
createDocumentFragment()//創(chuàng)建一個(gè)DOM片段
createElement()//創(chuàng)建一個(gè)具體的元素
createTextNode()//創(chuàng)建一個(gè)文本節(jié)點(diǎn)
(2)添加、移除、替換、插入
appendChild()
removeChild()
replaceChild()
insertBefore()
(3)查找
getElementsByTagName()//通過(guò)標(biāo)簽名稱
getElementsByName()//通過(guò)元素的Name屬性的值
getElementById()//通過(guò)元素Id,唯一性
注明出處。