1.對Web標(biāo)準(zhǔn)的理解和W3C的認(rèn)識。
Web標(biāo)準(zhǔn)簡單的將頁面分為結(jié)構(gòu)(HTML),樣式(CSS)暖璧,和行為(JavaScript)挪凑,Web標(biāo)準(zhǔn)將其獨立分開使其更具有模塊化役衡。
W3C對Web標(biāo)準(zhǔn)提出了規(guī)范化的要求,比如
① 對結(jié)構(gòu)的要求:標(biāo)簽字母要小寫嘁捷,標(biāo)簽要閉合造成,標(biāo)簽不隨意嵌套,這樣有助于頁面被搜索引擎的抓取雄嚣,對SEO有很大的幫助谜疤。
② 對樣式和行為的要求:要求盡量使用外鏈的樣式表和腳本,做到頁面的模塊化,使用更少的代碼和組件夷磕,這樣使頁面容易維護履肃,改版方便,不需要變動頁面內(nèi)容
2. Doctype的作用坐桩?嚴(yán)格模式和混雜模式的區(qū)別? 以及如何觸發(fā)尺棋?
Doctype存在HTML頁面代碼的第一行(<html>標(biāo)簽之前),用于告訴瀏覽器用什么樣的Web標(biāo)準(zhǔn)來解析該頁面绵跷。
嚴(yán)格模式是根據(jù)瀏覽器所支持的最高的標(biāo)準(zhǔn)來解析文檔膘螟。混雜模式(兼容模式)頁面會以寬松的向后兼容的模式被解析碾局,會模擬老瀏覽器的的行為以防止站點無法工作荆残。
頁面如果包含完整的DOCTYPE 頁面就是以嚴(yán)格模式來解析頁面, 如果不寫或者Doctype的格式錯誤會導(dǎo)致瀏覽器以兼容模式解析該頁面净当。
3. 為什么HTML5只用書寫<!DOCTYPE HTML> ?
因為HTML5不是基于SGML内斯,因此不需要對DTD進行引用,但是要用DOCTYPE來規(guī)范瀏覽器的行為
而HTML4.0是基于SGML像啼, 因此需要對DTD的引用俘闯,才能讓瀏覽器知道該文檔所使用的文檔類型。
4. 描述從輸入網(wǎng)址到顯示網(wǎng)頁的過程
1忽冻、瀏覽器輸入網(wǎng)址
2真朗、DNS服務(wù)器解析相應(yīng)的域名:一般是本機的DNS服務(wù)器先解析,如果沒有就請求上級DNS服務(wù)器中解析僧诚,直到得到相應(yīng)的Web服務(wù)器的IP地址
3遮婶、瀏覽器與服務(wù)器建立TCP連接(兩次握手)
4、瀏覽器向服務(wù)器發(fā)送HTTP請求
5湖笨、服務(wù)器響應(yīng)瀏覽器的請求蹭睡,查找資源并返回響應(yīng)報文(包括狀態(tài)碼200,300,400,500等)
6、服務(wù)器返回相應(yīng)的HTML源文件
7赶么、服務(wù)器與客戶端斷開TCP連接(4次揮手)
8肩豁、瀏覽器得到相應(yīng)的資源開始進行解析,構(gòu)建DOM樹辫呻,渲染DOM樹清钥,綁定事件的等頁面顯示完成。
5. HTTP1.1和HTTP2的區(qū)別
1放闺、HTTP 2.0 采用二進制格式并非文本格式
2祟昭、HTTP 2.0 是完全多路復(fù)用
3、使用報頭壓縮怖侦,降低了HTTP/2的開銷
4篡悟、HTTP/2 可以讓服務(wù)器的響應(yīng)主動推送到客戶端緩存中
6. HTML和XHTML的區(qū)別谜叹?
HTML是web網(wǎng)頁設(shè)計語言,XHTML是基于XML的置標(biāo)語言
XHTML元素必須被正確嵌套搬葬,正確關(guān)閉荷腊,標(biāo)簽必須小寫,必須有根元素急凰。
7. 盒子模型
分為IE盒子模型和標(biāo)準(zhǔn)盒子模型 (content ?border padding margin)
IE盒子模型包括conent女仰、border 和 padding
標(biāo)準(zhǔn)盒子模型包括content
8. 行內(nèi)元素有哪些? 塊級元素有哪些?
行內(nèi)元素: span img input textarea a input?
塊級元素: div h1~h6 ?ul ol p table dir
9. 對瀏覽器內(nèi)核的理解抡锈?以及常見的瀏覽器內(nèi)核有哪些疾忍?
瀏覽器內(nèi)核負(fù)責(zé)對網(wǎng)頁語法的解釋和渲染顯示,不同瀏覽器對網(wǎng)頁語法的解釋和渲染有所不同床三,因此在編寫頁面時要在不同內(nèi)核的瀏覽器中測試才行一罩。
常見的瀏覽器內(nèi)核有
IE瀏覽器的 Trident
Opera Chrome 使用webkit內(nèi)核
IE Edge瀏覽器使用 EdgeHtml內(nèi)核
10. CSS引入方法有哪些? link 和 @import 有什么區(qū)別撇簿?
頁面內(nèi)使用css的方式有: 行內(nèi)嵌入式 ?頁面頭部內(nèi)嵌套 外面鏈接調(diào)用
外部鏈接有兩種方式:link 和 @import
兩者的區(qū)別:link是XHTML的標(biāo)簽聂渊,不僅可以引入CSS外,還可以定義RSS服務(wù)
@import是屬于CSS范疇补疑,只能引入CSS文件
link引入的文件在頁面的加載同時加載歧沪,而@import的CSS必須在頁面加載完后才能加載
link引入的樣式支持JS的DOM操作更改樣式(即通過更改link的src屬性歹撒,來達(dá)到更換css樣式表)莲组,而@import引入的樣式不可以更改。
11. 簡述你對HTML語義化的理解
1暖夭、HTML語義化可以讓頁面的內(nèi)容結(jié)構(gòu)化锹杈,結(jié)構(gòu)清晰,有利于瀏覽器和搜索引擎的解析
2迈着、在沒有CSS樣式的情況下竭望,以文檔的形式展示出來,并且是便于理解的
3裕菠、有利于閱讀源碼人員的理解咬清,方便以后的維護,更新奴潘。
4旧烧、搜索引擎的爬蟲也依賴于HTML標(biāo)記來確定上下文和各個關(guān)鍵字的權(quán)重,有利于SEO画髓;
12掘剪、form表單的readonly 和 disabled屬性的區(qū)別?
readonly是用戶只能看奈虾,不能更改夺谁,但是會隨表單提交
disabled是input元素在加載時禁用廉赔,不會隨著表單提交
但二者都可以通過js腳本更改value值。
13匾鸥、<head>標(biāo)簽中唯一必須的標(biāo)簽是蜡塌?
下面這些標(biāo)簽可用在 head 部分::<base> <meta> <script> <link> <style> <title>,, 以及。,, 以及扫腺。
<title>定義文檔的標(biāo)題岗照,是head中唯一必須的元素
14、HTML5 新增了哪些特性笆环? 如何處理HTML5新標(biāo)簽的兼容問題攒至?
H5 新增了article section nav footer header; date time search email calender躁劣; canvas audio video迫吐; localStorge sessionStorge
使用html5shim框架, 對于IE6/7/8 通過document. 產(chǎn)生標(biāo)簽
如何分辨HTML5账忘? 通過聲明志膀,或者標(biāo)簽。
15鳖擒、HTML5的離線存儲怎么用溉浙?
在用戶沒有連接英特網(wǎng)時,可以正常訪問站點和應(yīng)用蒋荚;在用戶連接英特網(wǎng)時戳稽,更新用戶機器上的緩存文件。
原理:HTML5的離線存儲是基于一個新建的 ‘.appcache’文件的緩存機制(并非存儲技術(shù))期升,通過這個文件上的解析清單離線存儲資源惊奇,這些資源就會像cookie一樣被存儲下來。之后當(dāng)網(wǎng)絡(luò)處于離線狀態(tài)下時播赁,瀏覽器會通過被離線存儲的數(shù)據(jù)進行頁面展示颂郎。
使用方法:(1) 在頁面頭部像下面一樣加入一個 manifest 的屬性;
(2) 在 cache.manifest文件里編寫離線存儲資源容为;??
?CACHE MANIFEST#v0.11CACHE:? ?
?js/app.js
css/style.css
(3) 在離線狀態(tài)時乓序,操作 window.applicationCache進行需求實現(xiàn);
16坎背、瀏覽器怎么對HTML5的離線存儲資源進行管理和加載呢替劈?
在線情況下,瀏覽器檢測html5文件頭部是否有mainfest屬性沼瘫,如果有就請求mainfest文件抬纸,如果是第一次訪問,就會根據(jù)mainfest文件的內(nèi)容下載相應(yīng)的資源并且進行離線存儲耿戚, 如果已經(jīng)訪問過并且相應(yīng)的資源已經(jīng)離線存儲湿故,那么就調(diào)用相應(yīng)的離線資源加載頁面阿趁,然后瀏覽器會對比新的mainfest文件和就得mainfest文件,如果發(fā)生改變坛猪,就將重新下載文件中資源進行離線緩存
如果是離線情況就直接調(diào)用mainfest文件對應(yīng)的資源脖阵。
17、cookies墅茉、sessionStorge命黔、 localStorge的區(qū)別?
cookies的大小只有4k就斤,每次http請求都會發(fā)送悍募,可以規(guī)定cookies的生命時間,即在規(guī)定時間內(nèi)清除洋机,默認(rèn)是每次頁面關(guān)閉的時候清除
sessionStorge的大小有5M坠宴, 在瀏覽器關(guān)閉的時候清除, 不參與服務(wù)器通信
localStorge的大小有5M,會一直存在绷旗,不會清除除非手動清除喜鼓, 不參與服務(wù)器通信
cookies通過domain文件和path/路徑 能達(dá)到文檔源級別
sessionStorge、localStorge是文檔源級別即同源窗口共享
但sessionStorge在不同瀏覽器的同一個窗口不能共享
文檔源級別是 協(xié)議衔肢、主機名庄岖、端口一樣
18、Label 的作用是什么角骤? 怎么使用隅忿?
label標(biāo)簽是來擴大表單控件的點擊范圍,本身沒有任何樣式启搂,當(dāng)點擊label標(biāo)簽的時候硼控,會自動將焦點轉(zhuǎn)到與label相關(guān)聯(lián)的控件上
<lable name="number">Number </lable>
<input id= "number" type="text">
//當(dāng)點擊label標(biāo)簽時刘陶,焦點轉(zhuǎn)到input標(biāo)簽上
19胳赌、如何實現(xiàn)瀏覽器內(nèi)多個標(biāo)簽頁之間的通信?
1 使用localStorge
localStorge.setItem(key, value) //給localStorge添加內(nèi)容
localStorge.getItem(key)//獲取localStorge中的內(nèi)容
在兩一個頁面進行
window.addEventListener("storge", function(event){
console.log(event.key + "=" + event.newValue);
})
2 使用cookies 和 setInterval
document.cookies="name="+name;
setInterval(function(){
JSON.parse("{\"+ document.cookie.replace(/;\s+/gim,"\",\"").replace(/=/gim,"\":\"") +"\"}")[key];
}, 1000);
20匙隔、 webSocket 如何兼容低瀏覽器疑苫?
AdobeFlash?
SocketActiveXHTMLFile(IE)
基于multipart編碼
發(fā)送 XHR基于長輪詢的 XHR
21、iframe有哪些缺點纷责?
會阻塞主頁面的onload事件
搜索引擎無法解析這種頁面捍掺,不利于SEO
會影響頁面的并行加載
并行加載: 同一時間針對同一域名的請求
一般情況下iframe和所在頁面在同一域下
解決方案:
使用js動態(tài)給iframe的src加載頁面內(nèi)容
22、實現(xiàn) 不使用 border 畫出 1px 高的線再膳,在不同瀏覽器的標(biāo)準(zhǔn)模式與怪異模式下都能保持一致的效果挺勿?
height:1px
overflow: hidden
background:#ccc
23、實現(xiàn)在移動端的border為1px
.content:after{
position:absolute;
content: " ";
left: 0
top: 0
width:100%;
border: 1px solid #ccc;
}
@media(-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5){
.content:after{
-webkit-transform: scaleY(0.7)
transform:scaleY(0.7)
}
@media(-webkit-min-device-pixel-ratio: 2), (min-device-pixel-ratio: 2){
.content:after{
-webkit-transform: scaleY(0.5)
transform:scaleY(0.5)
}