1.網(wǎng)頁亂碼的問題是如何產(chǎn)生的?怎樣解決
先認(rèn)識認(rèn)識幾種編碼方式
ASCII
全稱美國標(biāo)準(zhǔn)信息交換代碼(American Standard Code for Information Interchange)的縮寫, 為美國英語通信所設(shè)計。它由128個字符組成,包括大小寫字母、數(shù)字0-9、標(biāo)點符號、非打印字符(換行符、制表符等4個)以及控制字符(退格、響鈴等)組成,每個字符占7位(1字節(jié)是8位)。
ISOLatin-1
歐洲人發(fā)明了一種8位字符集是ISO 8859-1Latin 1,也簡稱為ISOLatin-1。它對ASCII做了個擴充,對于0-127之間的字符還使用ASCII里的字符不變, 把位于128-255之間的字符表示拉丁字母表中特殊語言字符。
UNICODE
計算機不斷發(fā)展擴展到亞洲非洲,為了把地球上絕大多數(shù)語言用一種編碼方式表示出來,發(fā)明了UNICODE編碼,只用2個字節(jié)(16位)就可以編碼地球上幾乎所有地區(qū)的文字。但是,UNICODE只是理論上的編碼方式,相當(dāng)于給世界上每個文字打了個編號,但這編號具體如何在計算機里面存儲,可以有多種實現(xiàn)方式。比如utf-8和gbk。
UTF-8
utf-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼,又稱萬國碼。UTF-8用1到6個字節(jié)編碼UNICODE字符。用在網(wǎng)頁上可以同一頁面顯示中文簡體繁體及其它語言(如英文,日文,韓文)。
GBK
中國制定一套自己的規(guī)則,用2個字節(jié)來表示一個漢字,總共可以覆蓋2萬多個文字。 對于英文,還是保留UTF-8同樣的方式使用一個字節(jié)來表示。
記?。篣NICODE只是給字符一個代號,而GBK和UTF-8使用不同的規(guī)則來表示同一個代號
那么網(wǎng)頁產(chǎn)生亂碼的根本原因是我們保存HTML文件的編碼方式和瀏覽器解析HTML文件的解碼方式不一致。
解決方法:
在文件保存的時候你自己要清楚是用哪種編碼方式保存的(sublime默認(rèn)保存方式是utf-8,如果安裝了插件也可另存為gbk,其它IDE可以做設(shè)置保存格式)。如果你的文件是保存為utf-8格式,那么一定要在html 的 <head>里添加<meta charset="utf-8">,這句話的意思是告訴瀏覽器在打開這個頁面的時候直接用utf-8去解碼。 同理,如果你的文件保存為gbk格式,一定在文件里添加<meta charset="gbk">。
2.顏色有幾種寫法, 紅色、 綠色、藍(lán)色、白色、黑色如何表示? 透明黑色如何表示?#ccc的顏色, #eee的顏色? #333的顏色?
有三種寫法:
- 按名字指定顏色: 這是最直接的方法,有16種基本顏色(所有瀏覽器都有)和150種擴展顏色(只有較新的瀏覽器上有)可以采用這種方法指定,假設(shè)希望指定“red”作為一個body元素的背景色,可以在CSS中這么寫:
body {
background-color: red;
}
所以,按名指定一個顏色時,只需要輸入顏色名作為相應(yīng)的屬性值。CSS顏色名是不區(qū)分大小寫的,所以輸入red,Red,RED都是允許的。另外16種基本顏色是:aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, yellow。
- 用紅、綠、藍(lán)(rgb)值指定顏色:可以按紅、綠、藍(lán)的分量的多少來指定一個顏色。假設(shè)想指定一個背景色為橙色,它由紅色80%,綠色40%和藍(lán)色0%構(gòu)成,可以這么寫:
body {
background-color: rgb(80%, 40%, 0%);
}
以“rgb”開頭,這是red,green,blue的縮寫,然后在小括號里指定紅、綠、藍(lán)的百分比。
更為普遍的一種寫法是將紅、綠、藍(lán)值指定為0到255之間的一個數(shù)值,使用紅色204(255的80%就是204), 綠色102(255的40%就是102),藍(lán)色0(255的0%當(dāng)然是0)來指定橙色,代碼如下:
body {
background-color: rgb(204, 102, 0);
}
- 使用十六進(jìn)制碼指定顏色:一個十六進(jìn)制碼中,每組2位數(shù)字分別代表顏色的紅、綠、藍(lán)分量。所以前兩位數(shù)字代表紅色,接下來兩位表示綠色,最后兩位表示藍(lán)色。還是以橙色為例子,代碼就像這樣:
body {
background-color: #cc6600;
}
cc轉(zhuǎn)化為10進(jìn)制就是204,66轉(zhuǎn)化為10進(jìn)制就是102,00轉(zhuǎn)化為10進(jìn)制就是0。就這樣得到了各個分量的數(shù)值,就可以準(zhǔn)確的知道這個顏色的紅、藍(lán)、綠有多少。
| 顏色 | 英文單詞表示 | rgb值表示 | 16進(jìn)制表示|
| :--------: | :-----------: | :-------: |:--------: |
| 紅色 | red | rgb(255,0,0)|#ff0000 |
| 綠色 | green | rgb(0,255,0) |#00ff00|
| 藍(lán)色 | blue | rgb(0,0,255) |#0000ff|
| 白色 | white | rgb(255,255,255) |#ffffff|
| 黑色 | black | rfb(0,0,0) |#000000|
| 透明黑色 | \ | rgba( 0,0,0,0.3)||
如果每一組分量中的兩位數(shù)字都相同,可以使用簡寫模式。
| 16進(jìn)制表示 | 顏色 |
| :------: | :-----------: |
| #ccc (#cccccc) | 灰 |
| #eee (#eeeeee) | 淺灰 |
| #333 (#333333) | 深灰 |
3.<!doctype html>的作用是什么
- doctype就是給瀏覽器提供一項信息(聲明),即 HTML 是用什么版本編寫的。
- <!doctype html>的作用就是讓瀏覽器以html5的規(guī)范來解釋和顯示這個頁面。
- html5,它是目前html最新的版本,它其實是一份文檔,表示著最新規(guī)定的HTML中有哪些元素和屬性。
在看資料的時候發(fā)現(xiàn)一個有趣的問題,就是我們?yōu)槭裁磳懙氖?code><!doctype html>而不是
<!doctype html5>呢?原來在html的發(fā)展歷史上有過很多版本,而隨著版本的不斷變化,相同的代碼在瀏覽器中就會有不同的顯示甚至于顯示錯誤。
為了結(jié)束這種混亂的情況,人們就推出了新的版本HTML5,制定HTML5的人把這個規(guī)范變成了一個活的標(biāo)準(zhǔn),它會隨著技術(shù)的發(fā)展形成相應(yīng)文檔,所以,不再有版本號6、7、8,甚至可以不再把它叫做HTML5,因為從現(xiàn)在開始它就是"HTML"。
閱讀擴展:為什么HTML5里面我們不需要DTD
而之所以HTML5成為一個活的標(biāo)準(zhǔn)關(guān)鍵是它具有向后兼容性。向后兼容性表示我們可以繼續(xù)向HTML增加新的內(nèi)容,瀏覽器會支持這個內(nèi)容,不過它們還會繼續(xù)支持原來的內(nèi)容。所以,你現(xiàn)在寫的HTML頁面將會繼續(xù)正常工作,甚至以后增加了新的特性之后也能很好地工作。
4.嚴(yán)格模式和混雜模式指什么
- 嚴(yán)格模式又稱標(biāo)準(zhǔn)模式,瀏覽器以其支持的最高Web標(biāo)準(zhǔn)來呈現(xiàn)頁面。
- 混雜模式又稱怪異模式,頁面以一種比較寬松的向后兼容的方式顯示,但是可能會得到一個奇怪或丑陋的并不符合你的期待的結(jié)果?;祀s模式通常模擬老式瀏覽器(IE5.5以下)的行為以防止老站點無法工作
模式觸發(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)了向后兼容。
5.meta有什么作用,常見的值有哪些。
- <meta>元素可提供有關(guān)頁面的元信息(meta-information),比如針對搜索引擎和更新頻度的描述和關(guān)鍵詞。
- meta標(biāo)簽共有兩個屬性,它們分別是http-equiv屬性和name屬性,不同的屬性又有不同的參數(shù)值,這些不同的參數(shù)值就實現(xiàn)了不同的網(wǎng)頁功能。
常見的值:
定義針對搜索引擎的關(guān)鍵詞:
<meta name="keywords" content="HTML, CSS, XML, XHTML, JavaScript" />
定義對頁面的描述:
<meta name="description" content="免費的 web 技術(shù)教程。" />
定義頁面的最新版本:
<meta name="revised" content="David, 2008/8/8/" />
每 5 秒刷新一次頁面:
<meta http-equiv="refresh" content="5" />
必須的屬性
| 屬性 | 值 | 描述 |
| :-------- | :-----: | :----: |
| content | some_text | 定義與 http-equiv 或 name 屬性相關(guān)的元信息 |
可選的屬性
| 屬性 | 值 | 描述 |
| :-------- | :-----: | :----: |
| http-equiv | content-type,expires,refresh,set-cookie | 把 content 屬性關(guān)聯(lián)到 HTTP 頭部。 |
| name | author,description,keywords,generator,revised,others | 把 content 屬性關(guān)聯(lián)到一個名稱。 |
| scheme | some_text | 定義用于翻譯 content 屬性值的格式。 |
6. <meta http-equiv="XUAcompatible"content="IE=edge,chrome=1"有什么作用
- X-UA-Compatible是IE8專有的一個<meta>設(shè)置,對于IE8以下的瀏覽器是不識別的。 通過在meta中設(shè)置X-UA-Compatible的值,可以指定網(wǎng)頁的兼容性模式設(shè)置。
- "IE=edge" 表示告知IE瀏覽器使用可使用的最高版本的內(nèi)核來渲染頁面。
- “chrome=1“表示如果瀏覽器裝有Google Chrome Frame插件,將使用chome的內(nèi)核來渲染頁面。
7.常見的瀏覽器有哪些,什么內(nèi)核
| 瀏覽器 | 內(nèi)核 |
|---|---|
| Internet Explorer | IE 內(nèi)核 |
| Firefox | Gecko 內(nèi)核 |
| Chrome | WebKit 內(nèi)核 |
| Safari | WebKit 內(nèi)核 |
| Opera | Presto 內(nèi)核 |
本文版權(quán)歸饑人谷_任磊和饑人谷所有