《HTML5與CSS3實戰指南》——2.2 基本的HTML5模板

本節書摘來自異步社區《HTML5與CSS3實戰指南》一書中的第2章,第2.2節,作者: 【美】Estelle Weyl , Louis Lazaris , Alexis Goldstein 更多章節內容可以訪問云棲社區“異步社區”公眾號查看。

2.2 基本的HTML5模板

在您學習HTML5和新技術時,您可能想創建自己的藍圖或示例文件,并通過它們來構建基于HTML5的項目。實際上,您可能對已存在的XHTML或HTML4.0項目已經做了類似的事情。我們鼓勵您這樣做,當然您也可以考慮使用一些在線資源,從而為您提供一個HTML5的基本起點1。

在這個項目中,我們將從頭開始,編寫自己的代碼,并對每一部分進行詳細講解。當然,即使是最好、最龐大的示例網站也不可能包含所有的新元素和技術。我們也會詳細講解一些未在我們所創建的示例網站中應用的新功能。這樣,在您決定如何創建HTML5和CSS3網站和Web應用程序時,就會熟悉所提供的各種選項,也就可以將本書當作許多技術的快速參考資料了。

讓我們從一個簡單的HTML5網頁的基本框架開始:


90d31b79f63bc258283c78ff2e79155506fdfcf2

仔細看一下上面的標記。如果您正在從XHTML或HTML4過渡到HTML5,您會立即注意到HTML5在許多方面是不同的。
**
2.2.1 Doctype**
首先,我們進行文檔類型聲明(Document Type Declaration,也稱為doctype)。它可以用來告訴瀏覽器(或任何其他分析程序)它們所查看的文件類型。在HTML文件中,它表示具體的HTML版本及風格。doctype應是位于HTML文件最頂端的第一個項目。過去,doctype聲明非常難看且很難記,對于XHTML 1.0嚴格類型來說,doctype聲明如下所示。


12048c16fbcff7ebfe772b4afff25173a5fbd9cb

對于HTML4過渡類型來說,doctype聲明如下所示。


<a href=https://yqfile.alicdn.com/17b937f462c153707ead4de3714fcf25cc904ba2.png" >

經過幾年的發展,代碼編輯軟件開始提供包含doctype的HTML模板,或提供自動插入模板的方式。當然,快速的網頁搜索會很輕松地調出代碼以插入您需要的文檔類型。

盡管在文檔頂端的一長串文本并沒有對我們造成太大的影響(沒有迫使我們的網站瀏覽者下載其他的字節),HTML5清理了這個難以辨認的眼中釘。現在,我們所需要的只是下面這一行代碼。


f4496306c303241e8de9d64d257106f37ffa62dd

既簡單又明了。請您注意,“5”已經在聲明里消失了。盡管目前網站標記的版本是“HTML5”,但這確實僅是之前的HTML標準的更新—以后的規范還會在今天的基礎上進一步發展。由于瀏覽器要支持網站的所有內容,因此這里沒有一個固定的文檔類型去告訴瀏覽器應支持文檔中的哪種功能。

2.2.2 html元素
任何HTML文件中所包含的內容都是html元素,該元素在HTML5中并沒有顯著的變化。在我們的示例中,包含了值為“en”的lang屬性,表示文檔的語言是英語。在基于XHTML的語法中,要求包含xmlns屬性。在HTML5中,已經沒有這項要求。即使是lang屬性,對于文檔的驗證或正確運行都不是必不可少的。

我們目前所擁有的標記如下所示,其中包括結束</html>標記:


cb201cbbb9b6c26ef64956df0a87a1d4225f6f48

2.2.3 head元素
頁面的下一部分是<head>部分。head中的第一行用來定義文檔的字符編碼。這是另一個被簡化的元素。它的用法如下所示。


f7290b97bd338ba58c4bd68a3e361a91822d093f

HTML5通過將字符編碼<meta>標簽的內容縮減到最少,從而使之得到改進。代碼如下所示。

在幾乎所有的情況下,utf-8將是您在文檔中使用的值。本章篇幅有限,這里將不能完整地介紹字符編碼,或許您對此也并不感興趣。當然,如果您想進一步研究,可以訪問W3C網站2查閱相關主題。

預先準備 為確保所有瀏覽器能夠正確讀取字符編碼,整個字符編碼聲明必須包含在文檔的前512個字符中。必須將它放在所有基于內容的元素前面(比如,

元素,我們將在示例網站中演示)。
關于這個主題,我們可以寫很多。但是,為了使你們節省精力,我們省去了一些細節。現在,我們可以滿意地接受這個簡化的聲明,并繼續我們文檔的下一部分。


fc3518b212f55e7664f421f53e71225c2f932123

在這幾行中,HTML5與以前版本的語法幾乎沒有什么不同。頁面標題的聲明和以前一樣,<meta>標簽僅是一個可選的示例,用來表示可放置的位置,您可以按照自己的意愿,在此放置任意多個meta元素。

此標記塊的主要部分是樣式表,我們使用習慣的link元素來包含它。初看起來,您可能沒有發現任何區別。但是按照慣例,link元素包含一個type屬性,其值為text/css。有趣的是,在XHTML或HTML4中不需要該屬性,即使是在使用嚴格的文檔類型時也是如此。因為所有的瀏覽器都可以識別鏈接樣式表的內容類型,而無須其他的屬性,所以,基于HTML5的語法鼓勵您完全放棄使用type屬性。

2.2.4 公平競爭
接下來,在介紹標記中的新元素之前,我們需要先了解一些背景知識。

HTML5包括一些新元素,比如,我們將稍后介紹的article和section元素。您可能認為是舊版瀏覽器的主要問題,但這是錯誤的想法。這是因為大多數瀏覽器實際上并不在乎您使用什么標簽。如果您的HTML文檔有<recipe>標簽(或甚至使用<ziggy>標簽),或者CSS將一些樣式附加到該元素上,幾乎所有瀏覽器都會正常運行,并應用該樣式。

當然,這個假設的文檔不會生效,但在大多數瀏覽器(Internet Explorer是一個例外)上可正確呈現。在Internet Explorer 9之前,Internet Explorer禁止接收無法識別的元素。呈現引擎視這些秘密元素為“未知元素”,所以您不能改變其外觀及行為方式。這不僅包括我們所設想的元素,還包括那些在所開發的瀏覽器中未定義的元素。當然也包括HTML5的新元素。

編寫本書時,Internet Explorer 9剛剛發布(被廣泛使用還會需要一段時間),所以這是一個問題。我們想開始使用這些光鮮的新標簽,但是如果不能將這些CSS規則附加到這些元素上,那么我們的設計就會崩潰。

幸運的是,這里有一個解決方案:一個非常簡單的JavaScript,最初由John Resig開發,可以神奇地使HTML5的新元素在Internet Explorer的早期版本中顯示。

我們已經在條件注釋的標簽<script>中包含了所謂的“HTML5 shiv”3。條件注釋是Microsoft在Internet Explorer中實施的一個專用功能。它們向您提供用腳本或樣式確定特定瀏覽器版本的能力4。這種條件注釋告訴瀏覽器:封裝的標記僅供用戶使用Internet Explorer 9之前的版本查看網頁。


dd86ac749afd84113660937056b34acf61c72a83

請注意,如果您用JavaScript庫處理HTML5的新功能或新API,可能已經使HTML5的腳本可以運行。在本例中,您可以刪除關于Remy Sharp的腳本。其中的一個示例是Modernizr5,這是一個JavaScript庫,它能檢測現代HTML和CSS的新功能,將在附錄A介紹它。Modernizr包括能夠使HTML5在Internet Explorer早期版本中顯示的代碼,所以Remy腳本就顯得多余了。

使用Internet Explorer 6~Internet Explorer 8但禁用了JavaScript的用戶該怎么辦呢?

當然,仍有一些用戶(禁用了JavaScript的用戶)不能夠使用Remy的HTML5 shiv,可能有這個或那個原因。作為網站設計人員,即使用戶不能使用JavaScript,我們也必須使所有用戶都能夠瀏覽我們創建的網站內容。當45%~75%的用戶使用Internet Explorer時,這似乎是一個嚴重的問題。

但是事實并沒有那么糟糕。許多研究表明,不能使用JavaScript的用戶非常少,可以忽略不計。

2010年10月在雅虎網站發布的一項研究 6表明,全世界不能使用JavaScript的用戶大約只有1%。而另一個對數十億用戶的研究 7也得到了幾乎相同的結果。在這兩項研究中,相對于世界其他地方,美國用戶不能夠使用JavaScript的人數最多。

還有其他一些使用HTML5新元素的方式,不需要JavaScript在不受支持的瀏覽器中顯示設置了樣式的元素。不幸的是,那些方法很不現實,有許多其他缺陷。

如果您仍然十分關心這些用戶,可以考慮這種混合方法。例如,在缺少樣式的地方使用新HTML5元素不會有大問題,同時對于主要的布局容器,可使用div等傳統的元素。
2.2.5 剩余部分是歷史簡介
讓我們看看啟動模板的剩余部分,我們通常使用body元素以及其結束標記和</html>的結束標記。我們還在script元素中包含JavaScript文件的引用。

與我們前面討論過的link元素非常相像,<script>標簽并不要求您聲明type屬性。在XHTML中驗證包含外部腳本的網頁,<script>標簽應如下所示:


a33b87318e2fba47819f32e1aa411f130acb1382

出于實用性目的,JavaScript僅是一種在Web上使用的腳本語言,并且即使您不明確聲明,所有的瀏覽器也都會假設您使用的是JavaScript,所以type屬性無需在HTML5文檔中聲明:


<a href=https://yqfile.alicdn.com/a799d2876cdb1aeb167ebf2bfdb803665e27e97e.png" >

我們將script元素放在頁面底部,以使其符合嵌入JavaScript的最佳做法。我們還需處理頁面的載入速度。當瀏覽器碰到腳本時,它會將腳本分解成若干部分,此時將暫停載入和呈現頁面的其余部分。如果在頁面頂部以及所有內容之前放置大量腳本,這將導致頁面載入十分緩慢。這就是為什么將大部分腳本放在頁面最底部的原因,這樣可以在頁面載入完成以后,再對腳本進行分解。

在一些情況(比如HTML shiv)下,由于您想在瀏覽器開始呈現頁面之前呈現效果,可根據需要,將腳本放在文檔的head中。2

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258939.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258939.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258939.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c# Message const

typeTMsg packed recordhwnd: HWND; //窗口句柄message: UINT;//消息常量標識符wParam: WPARAM ;// 32位消息的特定附加信息lParam: LPARAM ;// 32位消息的特定附加信息time: DWORD;//消息創建時的時間pt: TPoint; //消息創建時的鼠標位置end ; 消息中有什么&#xff1f;是否覺…

OpenCV坐標體系的初步認識

實驗基礎本次實驗通過一個簡短的例子&#xff0c;主要來說明下面4個問題&#xff1a; 1. 坐標體系中的零點坐標為圖片的左上角&#xff0c;X軸為圖像矩形的上面那條水平線&#xff1b;Y軸為圖像矩形左邊的那條垂直線。該坐標體系在諸如結構體Mat,Rect,Point中都是適用的。&…

python爬取知乎live_Python爬蟲 - 簡單抓取百度指數

前言有點忙&#xff0c;沒空寫東西&#xff0c;這是之前寫的&#xff0c;加了些配圖而已 這次要爬的網站是百度指數 正文 一、分析 打開網站(百度指數)&#xff0c;呈現出來是這樣的 如果搜索的話就需要登陸了&#xff0c;如果沒有什么特別頻繁的請求的話&#xff0c;直接登陸復…

在Visual Studio上開發Node.js程序

在Visual Studio上開發Node.js程序 原文:在Visual Studio上開發Node.js程序【題外話】 最近準備用Node.js做些東西&#xff0c;于是找找看能否有Visual Studio上的插件以方便開發。結果還真找到了一個&#xff0c;來自微軟的Node.js Tools for Visual Studio&#xff08;NTVS&a…

Oracle ASM 翻譯系列第十一彈:高級知識 Offline or drop?

Offline or drop? 當一個ASM磁盤不可用時&#xff0c;ASM會把它從磁盤組里移除&#xff0c;對嗎&#xff1f;要看情況&#xff0c;通常取決于ASM版本和磁盤組的冗余級別。因為一個external冗余的磁盤組會直接被dismount&#xff0c;所以主要關注normal和high冗余磁盤組的情況。…

net與樹莓派的情緣-安裝與卸載MySql(五)

安裝MySql sudo apt-get install mysql-server 刪除 mysql sudo apt-get autoremove --purge mysql-server-5.0sudo apt-get remove mysql-serversudo apt-get autoremove mysql-serversudo apt-get remove mysql-common //這個很重要上面的其實有一些是多余的。 清理殘留數據 …

mpls工作原理通俗解釋_用這兩種方法向最終用戶解釋NLP模型的工作原理還是不錯的...

點擊上方關注&#xff0c;All in AI中國上周&#xff0c;我看了一個關于“NLP的實踐特性工程”的演講。主要是關于LIME和SHAP在文本分類可解釋性方面是如何工作的。我決定寫一篇關于它們的文章&#xff0c;因為它們很有趣、易于使用&#xff0c;而且視覺上很吸引人。所有的機器…

向往2的年代

1. JDBC 對插入大量數據如何處理&#xff1f; 2. JAVA反射的使用&#xff0c;如何獲取一個java類的某個方法&#xff1f; 3. 數據庫連接池&#xff08;優化&#xff09; 4. 分布式事務管理轉載于:https://www.cnblogs.com/dragonflyyi/p/3564843.html

C++ limits頭文件的用法(numeric_limits)

初學C的時候&#xff0c;對這個模板很陌生&#xff0c;不知道它到底是做什么用的&#xff0c;今天拿起《C標準程序庫》&#xff0c;出現了它的討論&#xff0c;所以決定好好研究一番。 1. numeric_limits是什么&#xff1f; &#xff08;A&#xff09;《C標準程序庫》&#xff…

三層架構——配置文件

1、配置文件是什么&#xff1f; 配置文件是隨安裝程序一起被安裝到計算機上的文件&#xff0c;里面存放著安裝好的應用程序執行時所須要的參數。 應用程序配置文件是標準的XML文件&#xff0c;XML標記和屬性是區分大寫和小寫的。它能夠按須要更改&#xff0c;開發者可使用配置文…

《嵌入式系統開發之道——菜鳥成長日志與項目經理的私房菜》——02-04項目范圍(Scope)管理...

本節書摘來異步社區《嵌入式系統開發之道——菜鳥成長日志與項目經理的私房菜》一書中的第2章&#xff0c;第2.4節&#xff0c;作者&#xff1a;邱毅凌&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看 02-04項目范圍&#xff08;Scope&#xff09;管理 嵌入式…

flex(入門)之timer的使用,鍵盤,鼠標的監聽

package {import flash.display.Shape;import flash.display.Sprite;import flash.events.Event;import flash.events.KeyboardEvent;import flash.events.MouseEvent;import flash.events.TimerEvent;import flash.utils.Timer;import mx.controls.Label;//窗體大小&#xff0…

python 線程超時設置_python 條件變量Condition(36)

文章首發微信公眾號&#xff0c;微信搜索&#xff1a;猿說python對于線程與線程之間的交互我們在前面的文章已經介紹了 python 互斥鎖Lock / python事件Event , 今天繼續介紹一種線程交互方式 – 線程條件變量Condition.一.線程條件變量Condition相關函數介紹acquire() — 線程…

MsWord 操作總結

轉自&#xff08;http://www.cnblogs.com/eye-like/p/4121219.html&#xff09; Msdn上的word操作api&#xff08;不過只有英文版&#xff0c;英文差的先閃過&#xff09; Word2007的API&#xff1a;http://msdn.microsoft.com/en-us/library/bb257531(voffice.12).aspxWord201…

fwrite,fread and fprintf,fscanf的一些使用體會

這周一直在完成一個任務&#xff0c;就是將訓練出的多個model寫成一個model。其中我們使用了c語言的讀寫方法&#xff0c;搞了一星期&#xff0c; 挖了很多坑&#xff0c;最終都鏟平了。下面列舉出若干有用的知識。 1.fwrite,fread VS fprintf,fscanf的區別 fwrite,fread 讀寫…

《第一桶金怎么賺——淘寶開店創業致富一冊通》一一1.4 淘寶開店創業的流程...

本節書摘來自異步社區出版社《第一桶金怎么賺——淘寶開店創業致富一冊通》一書中的第1章&#xff0c;第1.4節&#xff0c;作者&#xff1a;葛存山&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 1.4 淘寶開店創業的流程 第一桶金怎么賺——淘寶開店創業致…

檢測虛擬機代碼總匯(更新中)

檢測虛擬機代碼 1 004092D0 /. 55 push ebp2 004092D1 |. 8BEC mov ebp,esp3 004092D3 |. 51 push ecx4 004092D4 |. 53 push ebx5 004092D5 |. 68 1D934000 push 0040931D 6 004092DA |. 64:FF35…

兩數之和 python_同一屏幕播放兩個視頻 視頻左右兩個畫面或視頻上下兩個畫面如何制作...

咱們在網上經常可以看到一些視頻畫面是可以在同一屏幕播放兩個視頻&#xff0c;有的是視頻左右兩個畫面或視頻上下兩個畫面這些是如何制作的呢&#xff0c;其實熟悉視頻編輯軟件的網友應該會比較了解這些操作&#xff0c;好嘞&#xff0c;來&#xff0c;現在就讓小編來演示一下…

dlib人臉特征點對齊

前面我們介紹了使用dlib進行人臉檢測&#xff0c;下面我們給出如何使用dlib進行人臉特征點檢測。我們直接貼出代碼。我們的代碼包括如下幾部分功能&#xff1a; 檢測單張圖片檢測一個視頻檢測一個camera 先給出代碼&#xff1a; #include <dlib/image_processing/frontal_…

IOS開發基礎知識--碎片13

1:運行程序報the file couldnt be opened because you dont have permission to view it 解決辦法&#xff1a;項目—>targets->build settings->build options->changed the value of the "Compiler for C/C/Objective-C" to Default Compiler. 2:百度…