前端js和css的經典面試題

Carrie_zzz發表於2017-11-26

(一)HTML中Doctype的作用
宣告叫做檔案型別定義(DTD),宣告的作用為了告訴瀏覽器該檔案的型別。讓瀏覽器解析器知道應該用哪個規範解析文件。宣告必須在HTML文件的第一行,這並不是一個HTML標籤。DTD(文件型別定義)是一組機器可讀的規則,他們定義XML或HTML的特定版本中允許有什麼,不允許有什麼。在解析網頁的時候,瀏覽器將使用這些規則檢查頁面的有效性並且採取 相應的措施。瀏覽器通過分析頁面的DOCTYPE宣告來了解使用哪個DTD,由此知道是使用HTML的哪個版本。
(二)嚴格模式和混雜模式的區別:
首先,嚴格模式(又稱標準模式,Standards模式)和混雜模式(Quirk模式)都是指瀏覽器的呈現模式,要與Doctype的兩種風格區別開來(嚴格( strict )和過渡( transitional ),過渡 DOCTYPE 的目的是幫助開發人員從老版本遷移到新版本)。
嚴格模式:又稱標準模式,是指瀏覽器按照 W3C 標準解析程式碼,呈現頁面
混雜模式:又稱怪異模式或相容模式,是指瀏覽器用自己的方式解析程式碼,即使用一種比較寬鬆的向後相容的方式來顯示頁面
而瀏覽器究竟是使用嚴格模式還是混雜模式呈現頁面與網頁中的 DTD (檔案型別定義)直接相關。
對於 HTML 4.01 文件,

  • 包含嚴格 DTD 的 DOCTYPE 常常導致頁面以標準模式呈現。
  • 包含過度 DTD 和 URI 的 DOCTYPE 也導致頁面以標準模式呈現。
  • 但是有過度 DTD 而沒有 URI 會導致頁面以混雜模式呈現。

DOCTYPE 不存在或形式不正確會導致 HTML 和 XHTML 文件以混雜模式呈現。
對於HTML5文件,
HTML5 沒有 DTD ,因此也就沒有嚴格模式與混雜模式的區別,HTML5 有相對寬鬆的語法,實現時,已經儘可能大的實現了向後相容。( HTML5 沒有嚴格和混雜之分)
Doctype作用? 嚴格模式與混雜模式如何區分?它們有何意義?
1)、宣告位於文件中的最前面,處於標籤之前。告知瀏覽器的解析器,用什麼文件型別規範來解析這個文件。
(2)、嚴格模式的排版和JS 運作模式是 以該瀏覽器支援的最高標準執行。

(3)、在混雜模式中,頁面以寬鬆的向後相容的方式顯示。模擬老式瀏覽器的行為以防止站點無法工作。
(4)、DOCTYPE不存在或格式不正確會導致文件以混雜模式呈現。
css引入方式有哪些?link和@import方式區別?
方式: 行內新增定義style屬性值,頁面頭部內嵌呼叫和外面連結呼叫,其中外面引入有兩種:Link和@import
區別:(1)link是XHTML標籤除了載入CSS外還可以定義RSS等其他事物;@import屬於css範疇,只能載入CSS
(2) :link引用css時,在頁面載入時同時載入;@import需要頁面網頁完全載入以後載入
(3)link是XHTML標籤,無相容性的問題;@import是在css2.1提出的,低版本的瀏覽器是不支援的
(4)link支援使用javascript控制DOM去改變樣式;而@import不支援
阻止像父容器傳遞

DOM中的事件物件:
(符合W3C標準) preventDefault() 取消事件預設行為
stopImmediatePropagation() 取消事件冒泡同時阻止當前節點上的事件處理程式被呼叫。
stopPropagation() 取消事件冒泡對當前節點無影響。
IE中的事件物件:
cancelBubble() 取消事件冒泡 returnValue() 取消事件預設行為

相關文章