從新梳理HTML基礎知識

緣起 html

  HTML(HyperText Markup Language超文本標記語言)是用於構建web頁面的標記語言和通用標準。它並非一項新的發明,由於超文本(具備超連接的文本)和標記語言(用於電子文檔的定義和描述)在HTML問世之前都早已存在多年。做爲一項劃時代的創造,它再次印證了喬布斯的名言:創新即整合(Creativity is just connecting things)。html5

  HTML的創造者,被後人稱爲互聯網之父的Tim Berners-Lee曾經是CERN(歐洲核子研究組織)的一位科學家。1990年,他受命開發一套軟件系統用於組織內部成員分享和查閱研究報告,因而他把超文本和標記語言合成了HTML,而後寫了一個瀏覽器和一個服務器,這就是萬維網(World Wide Web)的起源。是的,一羣科學家,只是爲了方便看報告,結果順手搞出了互聯網。web

  Tim Berners-Lee並非一個廣爲人知的名字,緣由是他徹底放棄了萬維網所能帶給他的數不勝數的財富,和他相似的人還有不少,好比Linux的創始人Linus。正是這些具有非凡理念的人物奠基了互聯網的精神基調:平等、共享、開源和創造。canvas

  1994年Tim建立了W3C,這是一個非盈利性的國際化組織,致力於維護和制定web相關的標準。 瀏覽器

       Tim Berners-Lee服務器

 

語義(semantic) websocket

  語義化標記,是指每種標記表示一種特定的內容形態,例如標題、列表、表格等。與之對應的概念,是樣式標記(presentational markup)。Tim最初設想HTML應該是一種純語義化的標記語言,然而在混沌無序的初始階段,各家瀏覽器廠商多少受到另外一種通行多年的標記語言SGML的影響,因爲該語言同時存在語義化標記和樣式標記,因而早期的HTML也被設計成了兩類標記的雜合體。不過隨着90年代末CSS的逐步應用以及隨之而起的「內容與表現分離」理念,樣式標記在新的HTML版本中被逐漸廢除,但出於向後兼容的考慮,仍然有部分樣式標記被保留,例如:i(樣式)/ em(語義);b(樣式)/ strong(語義)。app

  爲何須要使用語義化標記?框架

       一、HTML自己就是語義化標記語言,使用符合語義的標記,才談得上正確使用HTMLsocket

       二、使用合適的標記,能夠合理應用瀏覽器默認樣式

       三、有利於SEO

       四、使用合適的標記是確保可訪問性的一個前提

       五、更好的可維護性

 

版本與規格  

  HTML歷經多個版本迭代,早期版本由瀏覽器廠商主導,直到1999年W3C發佈第四代標準。

  第四代標準分化爲兩類,一類是SGML-based HTML,即HTML4.01,另外一類是XML-based HTML,即XHTML1.0。其中每一類下又分爲三種規格:Strict、Transitional和Frameset。

  XHTMl是W3C爲了規束HTML所作的一廂情願的徒勞,它試圖以嚴格的語法和極低的容錯率來矯正早期HTML市場上業已存在的種種不規範行爲。然而互聯網世界沒有誰能夠成爲上令下行的權威,而且標準必然是滯後於現實的,所以W3C後來放棄了XHTML2.0,轉而投入向後兼容的HTML5。

  2014年第五代標準HTML5發佈(Recommendation)。它最先是由一個由瀏覽器廠商表明組成的叫WHATWG的組織提出的,後來學院派的W3C在放棄XHTML的制定後,與實務派的WHATWG聯合,共同制定了H5標準。歷經十五年的換代升級,HTML5新增了大量的內容,包括新的標記(新的語義標籤、多媒體支持、新的屬性)和新的API(canvas、svg、webstorage、websocket……),其中許多內容模塊至今仍在完善中。

 

 

   HTML使用<!DOCTYPE >來聲明其版本及規格。

       DTD是通用標記語言SGML用於定義文檔遵循何種標準的一套語法規則,HTML4.01基於SGML,所以HTML4.01也引入了DTD的聲明方式,一共有三種模式:

       Strict:嚴格模式,不容許樣式標記和框架集

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

       Transitional:鬆散(混合、過渡)模式,容許樣式標記,不容許框架集 

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

       Frameset:框架集模式,容許樣式標記和框架集 

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

       HTML5不基於SGML,所以沒有引入DTD,也只有一種聲明:

   <!DOCTYPE html> 

 

標籤(tags)

圖例:H5元素;替換元素*;行內元素

注:僅包含全部H5支持的標籤。

全局標準屬性

  class、id、title、lang、style、tabindex

  dir:設置內容的文本方向

  accesskey:設置激活元素的快捷鍵

  /* H5新增 */

  contenteditable:規定內容是否可編輯,值爲布爾值

  contextmenu:與menu標籤配合使用,用於自定義右鍵菜單,目前僅火狐實現

  data-*:用於嵌入自定義數據

  draggable:用於規定元素是否可拖動,值爲布爾值

  dropzone:目前不支持。copy | move | link

  hidden:沒有值,單獨使用。IE不支持

  spellcheck:規定是否對元素內容進行拼寫檢查,值爲布爾值

  translate:規定是否翻譯元素內容。支持較差。yes | no

 

ARIA Role Attributes

       Accessible Rich Internet Applications (ARIA),是一個補充性的標準,用於進一步提升HTML的語義,以便於輔助性設備的識別。

       例如:

       <div role="slider" aria-labelledby="volume-label" aria-valuemin="1" aria-valuemax="100" aria-valuenow="67" ></div>

 

替換元素(replaced element)

  從CSS的角度看,替換元素是一種內容樣式在CSS控制範圍以外的元素,它的內容是一個獨立的外部對象。典型的替換元素有<img>, <object>, <video>,以及某些表單元素如<textarea>和<input>。有的元素如<audio>和<canvas>僅在某些狀況下是替換元素。使用僞元素content屬性插入的對象屬於匿名替換元素。

      In CSS, a replaced element is an element whose representation is outside the scope of CSS. These are a type of external object whose representation is independent of the CSS. Typical replaced elements are <img>, <object>, <video> or form elements like <textarea> and <input>. Some elements, like <audio> or <canvas> are replaced elements only in specific cases. Objects inserted using the CSS content properties are anonymous replaced elements.

   ——from MDN

      可見大部分替換元素都是單標籤,但也有少部分是標籤對,如textarea和canvas。

 

行內元素(inline)與塊級元素(block-level)

  區別:

  一、在正常流中是否另起一行

  二、盒模型規則不一樣 

 

meta

       meta標籤有四種屬性:

       name用於指定文檔的元數據信息,例如application-name | description | keywords | author | viewport ……

       http-equiv指定預編譯指令(pragma directive),用於設置響應頭,但僅當服務器未設置相應響應頭時才起做用。

       content用於描述前二者的內容。

       charset用於指定字符集,可單獨使用。

 

兼容性(compatibility)

       H5新標籤的兼容性問題主要存在於IE9如下的瀏覽器。

       方法一:在head中引入處理兼容性問題的js

   < ! - - [ if lt IE9 ] >

         <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>

   < ! [ endif ] - - >

       而後需顯示的將H5標籤設置爲block

   article,aside,dialog,footer,header,section,footer,nav,figure,menu{display:block}

       方法二:document.createElement()

 

可用性(usability)、可訪問性(accessibility)

       可訪問性主要是指Web內容對於殘障用戶的可閱讀和可理解性。

       廣義的可訪問性/可用性包含四個方面:

       可感知perceivable、可操做operable、可理解understandable、健壯性robust

       具體參見:https://www.w3.org/TR/WCAG20/

 

可維護性(maintainability)

       可維護性的首要前提是可讀性。可讀性越強,維護成本越低。

       確保HTML可維護性的基本方法:

       一、使用正確的標籤;

       二、詳細的註釋;

       三、合理的縮進與換行;

       四、結構與樣式分離/解耦

 

漸進加強(progressive enhancement)與優雅降級(graceful degradation)

       漸進加強和優雅降級是兩種相對的開發模式,目的是實現應用的兼容性、健壯性。它們的區別僅在於方向不一樣:漸進加強首先照顧老版本瀏覽器,而後在最低可用版本基礎上增長新特性;優雅降級則率先針對最新的瀏覽器,使用最新的技術,實現最好的效果,而後再向下兼容低端瀏覽器。

 

經常使用轉義字符

字符

十進制

轉義字符

字符

十進制

轉義字符

空格

&#160;

&nbsp;

&#162;

&cent;

&#60;

&lt;

&#163;

&pound;

&#62;

&gt;

÷

&#247;

&divide;

©

&#169;

&copy;

®

&#174;

&reg;

相關文章
相關標籤/搜索