1. Doctype 作用?
DOCTYPE 是用來(lái)聲明文檔類(lèi)型和 DTD 規(guī)范的。
<!DOCTYPE html>聲明位于 HTML 文檔中的第一行,不是一個(gè) HTML 標(biāo)簽,處于 html 標(biāo)簽之前。
告知瀏覽器的解析器用什么文檔標(biāo)準(zhǔn)解析這個(gè)文檔。DOCTYPE 不存在或格式不正確會(huì)導(dǎo)致文檔以兼容模式呈現(xiàn)。
2. 標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別?
標(biāo)準(zhǔn)模式的排版 和 JS 運(yùn)作模式都是以該瀏覽器支持的最高標(biāo)準(zhǔn)運(yùn)行。
在兼容模式中,頁(yè)面以寬松的向后兼容的方式顯示,模擬老式瀏覽器的行為以防止站點(diǎn)無(wú)法工作。
在 HTML4.01 中聲明指向一個(gè) DTD,由于 HTML4.01 基于 SGML,所以 DTD 指定了標(biāo)記規(guī)則以保證瀏覽器正確渲染內(nèi)容 HTML5 不基于 SGML,所以不用指定 DTD。
3. 行內(nèi)元素有哪些?塊級(jí)元素有哪些? 空(void)元素有那些?
行內(nèi)元素有:a b span img input select strong(強(qiáng)調(diào)的語(yǔ)氣)
塊級(jí)元素有:div ul ol li dl dt dd h1 h2 h3 h4…p
空元素:
常見(jiàn): br hr img input link meta
不常見(jiàn): area base col command embed keygen param source track wbr
4. 頁(yè)面導(dǎo)入樣式時(shí),使用 link 和 @import 有什么區(qū)別?
link 屬于 XHTML 標(biāo)簽,除了加載 CSS 外,還能用于定義 RSS, 定義 rel 連接屬性等作用;
而@import 是 CSS 提供的,只能用于加載 CSS; 頁(yè)面被加載的時(shí),link 會(huì)同時(shí)被加載,而@import 引用的 CSS 會(huì)等到頁(yè)面被加載完再加載;
import 是 CSS2.1 提出的,只在 IE5 以上才能被識(shí)別,而 link 是 XHTML 標(biāo)簽,無(wú)兼容問(wèn)題;
link 支持使用 js 控制 DOM 去改變樣式,而@import 不支持。
5. 介紹一下你對(duì)瀏覽器內(nèi)核的理解?
主要分成兩部分:渲染引擎 (layout engineer 或 Rendering Engine) 和 JS 引擎。
渲染引擎:負(fù)責(zé)取得網(wǎng)頁(yè)的內(nèi)容(HTML、XML、圖像等等)、整理訊息(例如加入 CSS 等),以及計(jì)算網(wǎng)頁(yè)的顯示方式,然后渲染到用戶(hù)的屏幕上。
JS 引擎則:解析和執(zhí)行 javascript 來(lái)實(shí)現(xiàn)邏輯和控制 DOM 進(jìn)行交互。 最開(kāi)始渲染引擎和 JS 引擎并沒(méi)有區(qū)分的很明確,后來(lái) JS 引擎越來(lái)越獨(dú)立,內(nèi)核就傾向于只指渲染引擎。
6. 為什么我們要棄用 table 標(biāo)簽?
table 的缺點(diǎn)在于服務(wù)器把代碼加載到本地服務(wù)器的過(guò)程中,本來(lái)是加載一行執(zhí)行一行,但是 table 標(biāo)簽是里面的東西全都下載完之后才會(huì)顯示出來(lái),那么如果圖片很多的話就會(huì)導(dǎo)致網(wǎng)頁(yè)一直加載不出來(lái),除非所有的圖片和內(nèi)容都加載完。
如果要等到所有的圖片全都加載完之后才顯示出來(lái)的話那也太慢了,所以 table 標(biāo)簽現(xiàn)在我們基本放棄使用了。
7. Quirks 模式和 Standards 模式有什么區(qū)別?
總體會(huì)有布局、樣式解析和腳本執(zhí)行三個(gè)方面的區(qū)別。
盒模型:在W3C標(biāo)準(zhǔn)中,如果設(shè)置一個(gè)元素的寬度和高度,指的是元素內(nèi)容的寬度和高度,而在Quirks 模式下,IE的寬度和高度還包含了padding和border。
設(shè)置行內(nèi)元素的高寬:在Standards模式下,給等行內(nèi)元素設(shè)置wdith和height都不會(huì)生效,而在quirks模式下,則會(huì)生效。
設(shè)置百分比的高度:在standards模式下,一個(gè)元素的高度是由其包含的內(nèi)容來(lái)決定的,如果父元素沒(méi)有設(shè)置百分比的高度,子元素設(shè)置一個(gè)百分比的高度是無(wú)效的用margin:0 auto設(shè)置水平居中:使用margin:0 auto在standards模式下可以使元素水平居中,但在quirks模式下卻會(huì)失效。
8. strong 與 em 的異同?
strong:粗體強(qiáng)調(diào)標(biāo)簽,強(qiáng)調(diào),表示內(nèi)容的重要性
em:斜體強(qiáng)調(diào)標(biāo)簽,更強(qiáng)烈強(qiáng)調(diào),表示內(nèi)容的強(qiáng)調(diào)點(diǎn)
9. div + css 的布局較 table 布局有什么優(yōu)點(diǎn)?
改版的時(shí)候更方便 只要改css文件。
頁(yè)面加載速度更快、結(jié)構(gòu)化清晰、頁(yè)面顯示簡(jiǎn)潔。
表現(xiàn)與結(jié)構(gòu)相分離。
易于優(yōu)化(seo)搜索引擎更友好,排名更容易靠前。
10. 為什么利用多個(gè)域名來(lái)存儲(chǔ)網(wǎng)站資源會(huì)更有效?
CDN緩存更方便
突破瀏覽器并發(fā)限制
節(jié)約cookie帶寬
節(jié)約主域名的連接數(shù),優(yōu)化頁(yè)面響應(yīng)速度
防止不必要的安全問(wèn)題
11. 請(qǐng)描述一下 cookies,sessionStorage 和 localStorage 的區(qū)別?
sessionStorage用于本地存儲(chǔ)一個(gè)會(huì)話(session)中的數(shù)據(jù),這些數(shù)據(jù)只有在同一個(gè)會(huì)話中的頁(yè)面才能訪問(wèn)并且當(dāng)會(huì)話結(jié)束后數(shù)據(jù)也隨之銷(xiāo)毀。
因此sessionStorage不是一種持久化的本地存儲(chǔ),僅僅是會(huì)話級(jí)別的存儲(chǔ)。而localStorage用于持久化的本地存儲(chǔ),除非主動(dòng)刪除數(shù)據(jù),否則數(shù)據(jù)是永遠(yuǎn)不會(huì)過(guò)期的。
Web storage和cookie的區(qū)別
Web Storage的概念和cookie相似,區(qū)別是它是為了更大容量存儲(chǔ)設(shè)計(jì)的。Cookie的大小是受限的,并且每次你請(qǐng)求一個(gè)新的頁(yè)面的時(shí)候Cookie都會(huì)被發(fā)送過(guò)去,這樣無(wú)形中浪費(fèi)了帶寬,另外cookie還需要指定作用域,不可以跨域調(diào)用。
除此之外,Web Storage擁有setItem,getItem,removeItem,clear等方法,不像cookie需要前端開(kāi)發(fā)者自己封裝setCookie,getCookie。
但是Cookie也是不可以或缺的:Cookie的作用是與服務(wù)器進(jìn)行交互,作為HTTP規(guī)范的一部分而存在 ,而Web Storage僅僅是為了在本地“存儲(chǔ)”數(shù)據(jù)而生。