1、HTML、XML、XHTML 有什么區(qū)別
HTML是超文本標(biāo)記語言(Hyper Text Markup Language),是語法較為松散的、不嚴(yán)格的Web語言。比如大小寫混寫,編碼不規(guī)范。
XML是可擴展標(biāo)識語言(The Extensible Markup Language),主要用于存儲數(shù)據(jù)和結(jié)構(gòu),重點是什么是數(shù)據(jù),如何存放數(shù)據(jù)。XML 沒有預(yù)定義的標(biāo)簽,是一種允許用戶對自己的標(biāo)記語言進行定義的源語言。
XHTML是可擴展超文本標(biāo)記語言(Extensible Hyper Text Markup Language),基于XML,作用與HTML類似,但語法更嚴(yán)格。
最主要的不同:
XHTML 元素必須被正確地嵌套
XHTML 元素必須被關(guān)閉
XHTML 標(biāo)簽名必須用小寫字母
XHTML 文檔必須擁有根元素
2、怎樣理解 HTML 語義化
根據(jù)內(nèi)容的結(jié)構(gòu)化(內(nèi)容語義化),選擇合適的標(biāo)簽(代碼語義化)便于開發(fā)者閱讀和寫出更優(yōu)雅的代碼,同時讓瀏覽器的爬蟲和機器很好地解析、讀懂內(nèi)容。簡單來講是讓代碼更方便理解,更簡潔,脫離了CSS還能看懂頁面。
語義化的好處:
清晰的頁面結(jié)構(gòu):去掉或樣式丟失的時候,也能讓頁面呈現(xiàn)清晰的結(jié)構(gòu),增強頁面的可讀性。
支持更多的設(shè)備:屏幕閱讀器(如果訪客有視障)會完全根據(jù)你的標(biāo)記來“讀”你的網(wǎng)頁。 如果你使用的含語義的標(biāo)記,屏幕閱讀器會根據(jù)你的標(biāo)簽來判斷網(wǎng)頁的內(nèi)容,而不是一個字母一個字母的拼寫出來。
有利于SEO:和搜索引擎建立良好溝通,有助于爬蟲抓取更多的有效信息,搜索引擎的爬蟲也依賴于標(biāo)記來確定上下文和各個關(guān)鍵字的權(quán)重。
便于團隊開發(fā)和維護:在團隊中大家都遵循同一個標(biāo)準(zhǔn),可以減少很多差異化的東西,方便開發(fā)和維護,提高開發(fā)效率,甚至實現(xiàn)模塊化開發(fā)。
3、怎樣理解內(nèi)容與樣式分離的原則
Html指的是結(jié)構(gòu);CSS指的是樣式;JavaScript指的是行為。
寫 HTML 的時候先不管樣式, 重點放在HTML的結(jié)構(gòu)和語義化上,讓 HTML 能體現(xiàn)頁面結(jié)構(gòu)或者內(nèi)容。之后再去寫樣式。
HTML 內(nèi)不允許出現(xiàn)屬性樣式,盡量不要出現(xiàn)行內(nèi)樣式。
寫 JS 的時候,盡量不要用 JS 去直接操作樣式,而是通過給元素添加刪除class來控制樣式變化。
4、有哪些常見的meta標(biāo)簽
標(biāo)簽
含義
<meta charset="utf-8">
聲明文檔使用的字符編碼
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/>
聲明文檔兼容模式,指示IE以目前可用的最高模式顯示內(nèi)容
<meta name="keywords" content="your tags">
定義針對搜索引擎的關(guān)鍵詞
<meta name="description" content="不超過850個字符">
頁面描述,告訴搜索引擎你的站點的主要內(nèi)容
<meta name="author" content="你的姓名">
定義網(wǎng)頁作者
<meta name="revised" content="David, 2008/8/8/" /> >
定義頁面的最新版本
<meta http-equiv="refresh" content="5"/>
5秒刷新一次頁面
<meta http-equiv="expires" content="Mon,12 May 2001 00:20:00 GMT">
用于設(shè)定網(wǎng)頁的到期時間,一旦過期則必須到服務(wù)器上重新調(diào)用。需要注意的是必須使用GMT時間格式
<meta http-equiv="pragma" content="no-cache">
禁用緩存
<meta http-equiv="set-cookie" content="Mon, 12 May 2001 00:20:00 GMT">
cookie設(shè)定,如果網(wǎng)頁過期,存盤的cookie將被刪除。需要注意的也必須使用GMT時間格式。
<meta name="robots" content="index,follow" />
搜索引擎索引方式
<meta name="robots" content="index,follow" />all:文件將被檢索,且頁面上的鏈接可以被查詢;none:文件將不被檢索,且頁面上的鏈接不可以被查詢;index:文件將被檢索;follow:頁面上的鏈接可以被查詢;noindex:文件將不被檢索;nofollow:頁面上的鏈接不可以被查詢。
5、文檔聲明的作用,嚴(yán)格模式和混雜模式指什么?<!doctype html>的作用?
網(wǎng)頁的DOCTYPE聲明的作用DOCTYPE是document type(文檔類型)的簡寫,在Web設(shè)計中用來說明你用的XHTML或者HTML是什么版本。要建立符合標(biāo)準(zhǔn)的網(wǎng)頁,DOCTYPE聲明是必不可少的關(guān)鍵組成部分;除非你的XHTML確定了一個正確的DOCTYPE,否則你的標(biāo)識和CSS都不會生效。在HTML中 doctype 有兩個主要目的:
對文檔進行有效性驗證
決定瀏覽器的呈現(xiàn)模式
Doctype可聲明三種DTD類型,分別表示嚴(yán)格版本、過渡版本以及基于框架的 HTML 文檔。當(dāng)瀏覽器廠商開始創(chuàng)建與標(biāo)準(zhǔn)兼容的瀏覽器時,他們希望確保向后兼容性。為了實現(xiàn)這一點,他們創(chuàng)建了兩種呈現(xiàn)模式:標(biāo)準(zhǔn)模式和混雜模式
嚴(yán)格模式的排版和 JS 運作模式是以該瀏覽器支持的最高標(biāo)準(zhǔn)運行;
在混雜模式中,頁面以一種比較寬松的向后兼容的方式顯示,模擬老式瀏覽器的行為以防止老站點無法工作。
模式觸發(fā)
瀏覽器根據(jù)DOCTYPE是否存在以及使用的哪種DTD來選擇要使用的呈現(xiàn)方法。如果XHTML、HTML 4.01文檔包含形式完整的DOCTYPE,那么它一般以標(biāo)準(zhǔn)模式呈現(xiàn)。
包含過渡DTD和URI的DOCTYPE也導(dǎo)致頁面以標(biāo)準(zhǔn)模式呈現(xiàn),但是有過渡DTD而沒有URI會導(dǎo)致頁面以混雜模式呈現(xiàn)。
DOCTYPE不存在或形式不正確會導(dǎo)致HTML和XHTML文檔以混雜模式呈現(xiàn)。
html5既然沒有DTD,也就沒有嚴(yán)格模式與寬松模式的區(qū)別,html5有相對寬松的語法,實現(xiàn)時,已經(jīng)盡可能大的實現(xiàn)了向后兼容。
6、瀏覽器亂碼的原因是什么?如何解決
亂碼產(chǎn)生的根本原因
保存的編碼格式和瀏覽器解析時的解碼格式不匹配導(dǎo)致
亂碼一般是英文以外的字符才會出現(xiàn)
解決辦法
設(shè)置<meta charset>標(biāo)簽聲明文檔使用的字符編碼
設(shè)置正確的字符編碼
設(shè)置瀏覽器顯示正確的編碼
如果瀏覽器瀏覽時候出現(xiàn)網(wǎng)頁亂碼,在瀏覽器中找到轉(zhuǎn)換編碼的菜單調(diào)整。IE9瀏覽器:在需要轉(zhuǎn)碼的網(wǎng)頁空白出右鍵鼠標(biāo),選擇“編碼”。傲游瀏覽器:在需要轉(zhuǎn)碼的網(wǎng)頁時,菜單“查看”-->“編碼”即可選擇轉(zhuǎn)換編碼。谷歌瀏覽器:在需要轉(zhuǎn)碼的網(wǎng)頁時,點擊右上角“三橫”圖標(biāo)選擇“工具”-->“編碼”即可選擇切換網(wǎng)頁編碼。
7、常見的瀏覽器有哪些?什么內(nèi)核?
瀏覽器內(nèi)核指的是
瀏覽器內(nèi)核又可以分成兩部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎。它負(fù)責(zé)取得網(wǎng)頁的內(nèi)容(HTML、XML、圖像等等)、整理訊息(例如加入 CSS 等),以及計算網(wǎng)頁的顯示方式,然后會輸出至顯示器或打印機。瀏覽器的內(nèi)核的不同對于網(wǎng)頁的語法解釋會有不同,所以渲染的效果也不相同。所有網(wǎng)頁瀏覽器、電子郵件客戶端以及其它需要編輯、顯示網(wǎng)絡(luò)內(nèi)容的應(yīng)用程序都需要內(nèi)核。JS 引擎則是解析 Javascript 語言,執(zhí)行 javascript 語言來實現(xiàn)網(wǎng)頁的動態(tài)效果。
最開始渲染引擎和 JS 引擎并沒有區(qū)分的很明確,后來 JS 引擎越來越獨立,內(nèi)核就傾向于只指渲染引擎。有一個網(wǎng)頁標(biāo)準(zhǔn)計劃小組制作了一個 ACID 來測試引擎的兼容性和性能。內(nèi)核的種類很多,如加上沒什么人使用的非商業(yè)的免費內(nèi)核,可能會有 10 多種,但是常見的瀏覽器內(nèi)核可以分這四種:Trident、Gecko、Webkit、Blink。
一、Trident內(nèi)核代表產(chǎn)品Internet Explorer,又稱其為IE內(nèi)核。Trident(IE內(nèi)核)是微軟在 Mosaic代碼的基礎(chǔ)之上修改而來的,Trident實際上是一款開放的內(nèi)核,其接口內(nèi)核設(shè)計的相當(dāng)成熟,因此才有許多采用 IE 內(nèi)核而非 IE 的瀏覽器(殼瀏覽器)涌現(xiàn)。Trident內(nèi)核常見的瀏覽器有:
IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0);
獵豹安全瀏覽器:1.0-4.2版本為Trident+Webkit,4.3版本為Trident+Blink;
360安全瀏覽器 :1.0-5.0為Trident,6.0為Trident+Webkit,7.0為Trident+Blink;
360極速瀏覽器:7.5之前為Trident+Webkit,7.5為Trident+Blink;
傲游瀏覽器 :傲游1.x、2.x為IE內(nèi)核,3.x為IE與Webkit雙核;
搜狗高速瀏覽器:1.x為Trident,2.0及以后版本為Trident+Webkit;
由于市場占有率高,微軟很長時間都并沒有更新 Trident 內(nèi)核,導(dǎo)致
一是 Trident 內(nèi)核曾經(jīng)幾乎與 W3C 標(biāo)準(zhǔn)脫節(jié)(2005年)
二是 Trident 內(nèi)核的大量 Bug 等安全性問題沒有得到及時解決。
二、Gecko內(nèi)核Gecko(Firefox內(nèi)核)Gecko:Netscape6開始采用的內(nèi)核,后來的Mozilla FireFox(火狐瀏覽器) 也采用了該內(nèi)核,Gecko的特點是代碼完全公開,因此,其可開發(fā)程度很高,全世界的程序員都可以為其編寫代碼,增加功能。因為這是個開源內(nèi)核,因此受到許多人的青睞,Gecko內(nèi)核的瀏覽器也很多,這也是Gecko內(nèi)核雖然年輕但市場占有率能夠迅速提高的重要原因。不過事實上,Gecko 內(nèi)核的瀏覽器仍然還是Firefox (火狐) 用戶最多,所以有時也會被稱為Firefox內(nèi)核。此外Gecko也是一個跨平臺內(nèi)核,可以在Windows、 BSD、Linux和Mac OS X中使用。
三、WebKit內(nèi)核代表作品Safari、ChromewebkitWebkit引擎包含WebCore排版引擎及JavaScriptCore解析引擎,均是從KDE的KHTML及KJS引擎衍生而來,它們都是自由軟件,在GPL條約下授權(quán),同時支持BSD系統(tǒng)的開發(fā)。所以Webkit也是自由軟件,同時開放源代碼。特點在于源碼結(jié)構(gòu)清晰、渲染速度極快。缺點是對網(wǎng)頁代碼的兼容性不高,導(dǎo)致一些編寫不標(biāo)準(zhǔn)的網(wǎng)頁無法正常顯示。
WebKit內(nèi)核常見的瀏覽器:
Apple Safari (Win/Mac/iPhone/iPad)
Symbian手機瀏覽器
Android 默認(rèn)瀏覽器
Google Chrome
四、BinkBlink 是一個由Google和Opera Software開發(fā)的瀏覽器排版引擎,這一渲染引擎是開源引擎WebKit中WebCore組件的一個分支。
Google 決定從 WebKit 衍生出自己的 Blink 引擎,將在 WebKit 代碼的基礎(chǔ)上研發(fā)更加快速和簡約的渲染引擎,并逐步脫離 WebKit 的影響,創(chuàng)造一個完全獨立的 Blink 引擎。
8、列出常見的標(biāo)簽,并簡單介紹這些標(biāo)簽用在什么場景
標(biāo)簽
場景
head
head標(biāo)簽是頁面的“頭部”, 一般來說,只有6個標(biāo)簽?zāi)芊旁?lt;head>標(biāo)簽內(nèi):<title>、<meta>、<link>、<style>、<script>、<base>
body
body標(biāo)簽是頁面的“身體”
h1~h6標(biāo)簽
設(shè)置不同的標(biāo)題
p標(biāo)簽
使用p標(biāo)簽來標(biāo)記一段文字
換行
<div>
主要用來為HTML文檔內(nèi)大塊的內(nèi)容提供結(jié)構(gòu)和背景
ul
無序列表
ol
有序列表
<form>
設(shè)置一個表單
img
設(shè)置一個圖像
a
連接