1 HTML、XML、XHTML 有什么區(qū)別
? ? html是超文本標(biāo)記語言,是最早寫網(wǎng)頁的語言,但是由于時(shí)間早,規(guī)范不是很好,大小寫混寫且編碼不規(guī)范(規(guī)范比較松散)
? ? xhml是升級(jí)版的html,對(duì)html進(jìn)行了規(guī)范,編碼更加嚴(yán)謹(jǐn)純潔,也是一種過渡語言,html向xml過渡的語言
? ? xml可擴(kuò)展標(biāo)記語言,是一種跨平臺(tái)語言,編碼更自由,可以自由創(chuàng)建標(biāo)簽。
? ? html與xhtml之間的區(qū)別:
? ?1、xhtml對(duì)比與html,xhtml文檔具有良好完整的排版,體現(xiàn)在兩方面:a、元素必須要有結(jié)束標(biāo)簽;b、元素必須嵌套;
? ?2、對(duì)于html的元素和屬性,xhtml必須小寫,因?yàn)閤ml是嚴(yán)格區(qū)分大小寫的,
? ?3、xhtml的屬性值必須在引號(hào)之中;
? ?4、 在xhtml中,name屬性是不贊成使用的,在以后的版本中將被刪除。
2 ?怎樣理解 HTML 語義化
? ? 什么是語義化:基本上都是圍繞著幾個(gè)主要的標(biāo)簽,像標(biāo)題(H1~H6)、列表(li)、強(qiáng)調(diào)(strong em)等等。
? ? 根據(jù)內(nèi)容的結(jié)構(gòu)化(內(nèi)容語義化),選擇合適的標(biāo)簽(代碼語義化)便于開發(fā)者閱讀和寫出更優(yōu)雅的代碼的同時(shí)讓瀏覽器的爬蟲和機(jī)器很好地解析。
? ? 為什么要語義化:
? ? 1. 為了在沒有CSS的情況下,頁面也能呈現(xiàn)出很好地內(nèi)容結(jié)構(gòu)、代碼結(jié)構(gòu);為了裸奔時(shí)好看;
? ? 2. 用戶體驗(yàn):例如title、alt用于解釋名詞或解釋圖片信息、label標(biāo)簽的活用;
? ? 3. 有利于SEO:和搜索引擎建立良好溝通,有助于爬蟲抓取更多的有效信息:爬蟲依賴于標(biāo)簽來確定上下文和各個(gè)關(guān)鍵字的權(quán)重;
? ? 4. 方便其他設(shè)備解析(如屏幕閱讀器、盲人閱讀器、移動(dòng)設(shè)備)來渲染網(wǎng)頁;
? ? 5. 便于團(tuán)隊(duì)開發(fā)和維護(hù),語義化更具可讀性,是下一步網(wǎng)頁的重要?jiǎng)酉颍裱璚3C標(biāo)準(zhǔn)的團(tuán)隊(duì)都遵循這個(gè)標(biāo)準(zhǔn),可以減少差異化。
3. 怎樣理解內(nèi)容與樣式分離的原則
? ? 在一個(gè)web網(wǎng)頁中一般分為三大塊,內(nèi)容(html),樣式(css),行為(js)
? ? 我們這里所說的內(nèi)容和樣式分離指的是html只負(fù)責(zé)內(nèi)容部分,而樣式全部讓css統(tǒng)一管理,不要將行內(nèi)樣式引入到html代碼中,這樣做將會(huì)增加后期維護(hù)和改動(dòng)的成本,不利于維護(hù)和改動(dòng)。
? 舉例說明:<p style="background:red">段落</p> 這里將這個(gè)段落的背景色單獨(dú)的設(shè)置成為了紅色
? 如果以后有個(gè)需求需要將所有的段落的背景色全部更改為其他的顏色,那么這種行內(nèi)樣式必將會(huì)帶來更大的工作量,要逐個(gè)的去修改行內(nèi)樣式,不利于全局的控制, 如果將樣式規(guī)則全部交給css進(jìn)行統(tǒng)一的管理,統(tǒng)一編寫css文件控制樣式,我只需要在每個(gè)段落標(biāo)簽中設(shè)置一個(gè)統(tǒng)一的class屬性就能一次性對(duì)所有段落的樣式進(jìn)行更改,極易維護(hù)和改動(dòng)。
? 所以,將樣式和內(nèi)容分離會(huì)大大提高維護(hù)和改動(dòng)的效率。
4. 有哪些常見的meta標(biāo)簽
<! 關(guān)鍵字 ,搜所引擎 SEO -->
<meta http-equiv="keywords" content="關(guān)鍵字1,關(guān)鍵字2,...">
<!-- 頁面描述 -->
<meta http-equiv="description" content="網(wǎng)頁描述">
<!-- content的取值為webkit,ie-comp,ie-stand之一,區(qū)分大小寫,分別代表用webkit內(nèi)核,IE兼容內(nèi)核,IE標(biāo)準(zhǔn)內(nèi)核。 -->
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<!-- 若頁面需默認(rèn)用極速核,增加標(biāo)簽: -->
<meta name="renderer" content="webkit">
<!-- 若頁面需默認(rèn)用ie兼容內(nèi)核,增加標(biāo)簽: -->
<meta name="renderer" content="ie-comp">
<!-- 若頁面需默認(rèn)用ie標(biāo)準(zhǔn)內(nèi)核,增加標(biāo)簽: -->
<meta name="renderer" content="ie-stand">
<!-- 如果安裝了GCF,則使用GCF來渲染頁面,如果沒有安裝GCF,則使用最高版本的IE內(nèi)核進(jìn)行渲染。>
X-UA-Compatible:這是個(gè)是IE8的專用標(biāo)記,用來指定IE8瀏覽器去模擬某個(gè)特定版本的IE瀏覽器的渲染方式(比如人見人煩的IE6),以此來解決部分兼容問題。 -->
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<!-- 強(qiáng)制頁面在當(dāng)前窗口以獨(dú)立頁面顯示。 -->
<meta http-equiv="Window-target" content="_top">
<!-- 自動(dòng)刷新,并指向新的頁面 -->
<meta http-equiv="Refresh" content="2;URL=http://">
<!-- 禁止瀏覽器緩存 -->
<!-- 是用于設(shè)定禁止瀏覽器從本地機(jī)的緩存中調(diào)閱頁面內(nèi)容,設(shè)定后一旦離開網(wǎng)頁就無法從Cache中再調(diào)出>
<meta http-equiv="pragram" content="no-cache">
<!-- 清除緩存(再訪問這個(gè)網(wǎng)站要重新下載!) -->
<meta http-equiv="cache-control" content="no-cache, must-revalidate">
<!-- 設(shè)定網(wǎng)頁的到期時(shí)間 -->
<meta http-equiv="expires" content="0">
<!-- 手機(jī)端 -->
<meta name="format-detection" content="telphone=no, email=no"/>
<!-- 忽略頁面中的數(shù)字識(shí)別為電話,忽略email識(shí)別 -->
<meta name="apple-mobile-web-app-status-bar-style" content="black"/>
<!-- 設(shè)置蘋果工具欄顏色 -->
<!-- 不讓百度轉(zhuǎn)碼 -->
<meta http-equiv="Cache-Control" content="no-siteapp" />
<!-- 不緩存 -->
<meta http-equiv="cache-control" content="no-cache" />
<!-- 初始化設(shè)備 -->
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, minimal-ui" />
<!-- 網(wǎng)站開啟對(duì)iphone私有 web app 程序的支持 -->
<meta content="yes" name="apple-mobile-web-app-capable" />
5. 文檔聲明的作用?嚴(yán)格模式和混雜模式指什么?<!doctype html>的作用?
DOCTYPE(是Document Type文檔類型的簡寫)是一組機(jī)器可讀的規(guī)則,它們指示(X)HTML文檔中允許有什么,不允許有什么,DOCTYPE正是用來告訴瀏覽器使用哪種DTD,一般放在(X)HTML文檔開頭聲明)用以告訴其他人這個(gè)文檔的類型風(fēng)格。
嚴(yán)格模式:嚴(yán)格模式是瀏覽器根據(jù)web標(biāo)準(zhǔn)去解析頁面,是一種要求嚴(yán)格的DTD,不允許使用任何表現(xiàn)層的語法,如<br/>
混雜模式:又稱怪異模式或兼容模式,是指瀏覽器用自己的方式解析代碼。
<!doctype html> 的作用是指出瀏覽器以html5的標(biāo)準(zhǔn)去解析html文檔
6. 瀏覽器亂碼的原因是什么?如何解決
? 瀏覽器亂碼的原因:
? 下面這個(gè)流程是我們寫入文件到展示文件的簡單描述:
? 1.我們使用編輯器編寫 HTML 文件
? 2.保存編寫的HTML文件
? 3.使用瀏覽器打開HTML文件
? 4.HTML文件在瀏覽器展示
亂碼的問題就出在第二步和第四步,當(dāng)我們保存這個(gè)文件的時(shí)候會(huì)以編輯器默認(rèn)的編碼方式保存文件,但是瀏覽器并不知道文件的編碼方式是什么,瀏覽器就只能使用它默認(rèn)的解碼方式,由于編碼和解碼的方式不一致就導(dǎo)致了亂碼的出現(xiàn)
如何解決亂碼問題(即如何通知瀏覽器用什么方式解碼呢?):
首頁,在文件保存的時(shí)候你自己要清楚是用哪種編碼方式保存的。如果你的文件是保存為utf-8格式,那么一定要在html 的 <head>里添加<meta charset="utf-8">,這句話的意思是告訴瀏覽器在打開這個(gè)頁面的時(shí)候不要去猜了,直接用utf-8去解碼。 同理,如果你的文件保存為gbk格式,一定在文件里添加<meta charset="gbk">。
亂碼產(chǎn)生的原因是由于文件的編碼和瀏覽器的解碼方式不一致導(dǎo)致的。
7. 常見的瀏覽器有哪些,什么內(nèi)核
Internet Explorer:
IE開發(fā)計(jì)劃開始于1994年夏天,微軟為抵抗當(dāng)時(shí)主流的網(wǎng)景Netscape Navigator,要在Windows中開發(fā)適合自己的瀏覽器,但微軟并沒有時(shí)間從零開始。因此和Spyglass合作,于是IE從早期一款商業(yè)性的專利網(wǎng)頁瀏覽器Spyglass Mosaic派生出來,雖然Spyglass Mosaic與NCSA Mosaic(首款應(yīng)用得最廣泛的網(wǎng)頁瀏覽器)甚為相似,但Spyglass Mosaic則相對(duì)地較不出名并使用了NCSA Mosaic少量的源代碼。
Safari
Safari是蘋果公司開發(fā)的瀏覽器,使用了KDE(Linux桌面系統(tǒng))的KHTML作為瀏覽器的運(yùn)算核心,Safari所用瀏覽器內(nèi)核的名稱是大名鼎鼎的WebKit。?Safari在2003年1月7日首度發(fā)行測(cè)試版,并成為Mac?OS?X?v10.3與之后版本的默認(rèn)瀏覽器,也成為蘋果其它系列產(chǎn)品的指定瀏覽器(也已支持Windows平臺(tái))。
如上述可知,WebKit前身是KDE小組的KHTML引擎,可以說WebKit是KHTML的一個(gè)開源的分支。當(dāng)年蘋果在比較了Gecko和KHTML后,選擇了后者來做引擎開發(fā),是因?yàn)镵HTML擁有清晰的源碼結(jié)構(gòu)和極快的渲染速度。
需要了解的是,雖然我們稱WebKit為瀏覽器內(nèi)核(或?yàn)g覽器引擎),但不太適合直接稱之為我們開頭提到的Rendering?Engine(渲染引擎),因?yàn)閃ebKit本身主要是由兩個(gè)引擎構(gòu)成的,一個(gè)正是渲染引擎“WebCore”,另一個(gè)則是javascript解釋引擎“JSCore”,它們均是從KDE的渲染引擎KHTML及javascript解釋引擎KJS衍生而來。
在2010年4月,蘋果公司宣布了其瀏覽器引擎Webkit的最新項(xiàng)目?Webkit2。Webkit2的目標(biāo)是實(shí)現(xiàn)獨(dú)立進(jìn)程與非阻斷式API。
WebKit可以說是蘋果公司給開源世界的一大貢獻(xiàn),基于此開源引擎,衍生了多個(gè)WebKit分支,如下面要介紹的Chrome的瀏覽器引擎。
Chrome?/?Chromium
谷歌Chrome/Chromium瀏覽器從08年創(chuàng)始至今一直使用蘋果公司的WebKit作為瀏覽器內(nèi)核原型,是WebKit的一個(gè)分支,我們可以稱之為Chromium引擎(注意我們這里說的是Chromium引擎,而不是Chromium瀏覽器)。
這里順便介紹下Chrome和Chromium兩個(gè)瀏覽器的區(qū)別——Chromium瀏覽器是谷歌為發(fā)展自家的瀏覽器Chrome而開啟的計(jì)劃,所以Chromium相當(dāng)于Chrome的工程版或稱實(shí)驗(yàn)版(盡管Chrome自身也有β版階段),新功能會(huì)率先在Chromium上實(shí)現(xiàn),待驗(yàn)證后才會(huì)應(yīng)用在Chrome上。Chromium一天最多可以更新十幾二十個(gè)版本,實(shí)驗(yàn)性的新特性都會(huì)現(xiàn)在這里放出,但是Chromium本身其實(shí)并不穩(wěn)定;而Chrome總共有四個(gè)更新分支:Canary、Dev、Beta、Stable,穩(wěn)定性依次增強(qiáng)。
我們說回引擎。Chromium引擎雖然是屬于WebKit的分支,卻把WebKit的代碼梳理得可讀性提高很多,所以以前可能需要一天進(jìn)行編譯的代碼,現(xiàn)在只要兩個(gè)小時(shí)就能搞定。因此Chromium引擎和其它基于WebKit的引擎所渲染頁面的效果也是有出入的。基于以上原因,有的地方會(huì)把Chromium引擎跟WebKit區(qū)分開來,有的地方則直接把Chromium引擎歸為WebKit(比如維基百科),其實(shí)都有其道理。
然而在13年發(fā)布的Chrome?28.0.1469.0版本開始,Chrome放棄Chromium引擎轉(zhuǎn)而使用最新的Blink引擎(基于WebKit2——蘋果公司于2010年推出的新的WebKit引擎),Blink對(duì)比上一代的引擎精簡了代碼、改善了DOM框架,也提升了安全性。
Opera
Opera瀏覽器,是一款挪威Opera?Software?ASA公司制作的支持多頁面標(biāo)簽式瀏覽的網(wǎng)絡(luò)瀏覽器。是跨平臺(tái)瀏覽器可以在Windows、Mac和Linux三個(gè)操作系統(tǒng)平臺(tái)上運(yùn)行。Opera瀏覽器創(chuàng)始于1995年4月,到2014年3月4日,官方發(fā)布的個(gè)人電腦用的最新版本為Opera20。
Opera的一個(gè)里程碑作品是Opera7.0,因?yàn)樗褂昧薕pera?Software自主開發(fā)的Presto渲染引擎,取代了舊版Opera?4至6版本使用的Elektra排版引擎。
Presto加入了動(dòng)態(tài)功能,例如網(wǎng)頁或其部分可隨著DOM及Script語法的事件而重新排版。Presto在推出后不斷有更新版本推出,使不少錯(cuò)誤得以修正,以及閱讀Javascript效能得以最佳化,并成為當(dāng)時(shí)速度最快的引擎。
然而為了減少研發(fā)成本,Opera在2013年2月宣布放棄Presto,轉(zhuǎn)而跟隨Chrome使用WebKit分支的Chromium引擎作為自家瀏覽器核心引擎。
在Chrome與2013年推出Blink引擎(也是基于WebKit的分支)之后,Opera也緊跟其腳步表示將轉(zhuǎn)而使用Blink作為瀏覽器核心引擎。
Firefox
Mozilla?Firefox是一個(gè)開源網(wǎng)頁瀏覽器,原名是Firebird,2004年2月9日,Mozilla?Firebird決定改稱Mozilla?Firefox。Firefox瀏覽器使用的是Gecko內(nèi)核,其發(fā)展歷程如下:
1997年,網(wǎng)景收購了DigitalStyle。當(dāng)時(shí),網(wǎng)景瀏覽器在各方面的表現(xiàn)已經(jīng)比不上她的主要競(jìng)爭(zhēng)對(duì)手Internet?Explorer。網(wǎng)景開始研發(fā)下一代的排版引擎,并期望把新的排版引擎應(yīng)用于下一版本的網(wǎng)景瀏覽器上。
1998年初,Mozilla計(jì)劃開始執(zhí)行。這個(gè)新的排版引擎名為Raptor,以開發(fā)源碼的方式發(fā)放于互聯(lián)網(wǎng)上。后來,因?yàn)樯虡?biāo)問題,Raptor改名為NGLayout(即next?generation?layout之意)。而最后NGLayout就被網(wǎng)景重新命名為Gecko。
2003年7月15日時(shí)代華納解散了網(wǎng)景公司,大部分開發(fā)者被解雇。Mozilla基金會(huì)亦在當(dāng)天成立,繼續(xù)推動(dòng)著Gecko的發(fā)展。時(shí)至今天,Gecko仍繼續(xù)由Mozilla的雇員和義工所維護(hù)和發(fā)展。
最后還是再談?wù)刯avascript引擎(后面統(tǒng)稱JS引擎)這東西。我們上述的渲染引擎主要是負(fù)責(zé)HTML、CSS以及其他一些東西的渲染,而JS引擎則主要負(fù)責(zé)對(duì)javascript的渲染,一個(gè)JS引擎的好壞決定了一個(gè)瀏覽器對(duì)腳本的加載和執(zhí)行速度,也影響了其跑分。
下方列出各種主流瀏覽器各自的JS引擎,了解下即可:
Firefox:
SpiderMonkey:第一款JavaScript引擎,由Brendan?Eich在Netscape?Communications時(shí)編寫,用于Mozilla?Firefox?1.0~3.0版本。
Rhino:由Mozilla基金會(huì)管理,開放源代碼,完全以Java編寫。
TraceMonkey:基于實(shí)時(shí)編譯的引擎,其中部份代碼取自Tamarin引擎,用于Mozilla?Firefox?3.5~3.6版本。
JaegerMonkey:德文J?ger原意為獵人,結(jié)合追蹤和組合碼技術(shù)大幅提高性能,部分技術(shù)借鑿了V8、JavaScriptCore、WebKit:用于Mozilla?Firefox?4.0以上版本。
IonMonkey:可以對(duì)JavaScript編譯后的結(jié)果進(jìn)行優(yōu)化,用于Mozilla?Firefox?18.0以上版本。
OdinMonkey:可以對(duì)asm.js進(jìn)行優(yōu)化,用于Mozilla?Firefox?22.0以上版本。
Chrome:
V8:開源,由Google丹麥開發(fā),是Google?Chrome的一部分。
注:我們上面提到Chrome是基于WebKit的分支,而WebKit又由渲染引擎“WebCore”和JS解釋引擎“JSCore”組成,可能會(huì)讓你搞不清V8和JSCore的關(guān)系。你可以這樣理解——WebKit是一塊主板,JSCore是一塊可拆卸的內(nèi)存條,谷歌實(shí)際上認(rèn)為Webkit中的JSCore不夠好,才自己搞了一個(gè)V8?JS引擎,這就是Chrome比Safari在某些JS測(cè)試中效率更高的原因。
IE:
Chakra:中文譯名為查克拉,用于Internet?Explorer?9的32位版本及IE10+。
Opera:
Linear?A:用于Opera?4.0~6.1版本。
Linear?B:用于Opera?7.0~9.2版本。
Futhark:用于Opera?9.5~10.2版本。
Carakan:由Opera軟件公司編寫,自O(shè)pera10.50版本開始使用。
8.列出常見的標(biāo)簽,并簡單介紹這些標(biāo)簽用在什么場(chǎng)景
<h1>~<h6> 標(biāo)題?
<p> 段落,大段文字展示的時(shí)候用
<a> 鏈接,需要在頁面上鏈接到另外一個(gè)地址時(shí)使用a鏈接
<table> 表格, 當(dāng)需要以表格的形式展示內(nèi)容時(shí)使用
<ol><li> 有序列表
<ul><li> 無序列表
<strong><em> 強(qiáng)調(diào) 斜體,表示對(duì)某些內(nèi)容的強(qiáng)調(diào)
<iframe> 嵌套,在頁面中嵌套另外一個(gè)頁面時(shí)使用
<button> 按鈕
<img> 圖像
<div> 塊級(jí)元素