this is content
摘要:最近關注的重學前端系列文章,也想把已知的前端知識體系梳理一遍,夯實基礎的同時,總結提升。標準模式的排版和運作模式都是以該瀏覽器支持的最高標準運行。模式是目前最常用的模式。嚴格模式不允許展示型棄用元素和框架集。中空格不會被自動刪除。
最近關注winter的“重學前端”系列文章,也想把已知的前端知識體系梳理一遍,夯實基礎的同時,總結提升。接下來會從HTML、CSS、JS、性能、網絡安全、框架通識進行分類總結。Doctype作用?標準模式與兼容模式各有什么區別?
聲明位于HTML文檔的第一行,處于之前。
聲明不是 HTML 標簽;它是指示 web 瀏覽器關于頁面使用哪個 HTML 版本進行編寫的指令。Doctype不存在或者格式不正確都會導致文檔以兼容模式/混雜模式呈現。
標準模式的排版 和JS運作模式都是以該瀏覽器支持的最高標準運行。在兼容模式中,頁面以寬松的向后兼容的方式顯示,模擬老式瀏覽器的行為以防止站點無法工作。
HTML5 為什么只需要寫 ?HTML5 不基于 SGML,因此不需要對DTD進行引用,但是需要doctype來規范瀏覽器的行為(讓瀏覽器按照它們該有的方式來運行)
而HTML4.01基于SGML,所以需要對DTD進行引用,才能告知瀏覽器文檔所使用的文檔類型。
總體上應該分為三類: HTML5,HTML4.01,XHTML。
HTML5HTML5模式是目前最常用的模式。直接在DOCTYPE后面添加html即可。
HTML4.01 模式分為三種模式:嚴格模式(strict)、過度模式(transitional)、Frameset模式。區別在于是否允許使用展示性和棄用元素,以及是否允許使用框架集。
嚴格模式:不允許展示型、棄用元素和框架集。
過度模式:允許使用展示性元素、棄用元素(比如font、color等),不允許使用框架集。
Frameset模式:允許展示性元素、棄用元素,允許框架集。
XHTML 模式XHTML是一種比較嚴格的模式,所有元素必須以XML格式編寫。分類和HTML4.01比較類似,分為嚴格模式、過渡模式、Frameset模式,同時添加了1.1模式。
嚴格模式:不允許展示性、棄用元素和框架集
過渡模式:允許展示性、棄用元素(比如font,color等),不允許框架集
Frameset模式:允許展示性、棄用元素,允許框架集
XHTML 1.1:該 DTD 等同于 XHTML 1.0 Strict,但允許添加模型(例如提供對東亞語系的 ruby 支持)。
最后附上各種文檔類型支持的元素列表:HTML5/HTML 4.01/XHTML 元素和有效的 DTD
區分HTML4.01和HTML5DOCTYPE聲明
新增結構元素
新增功能元素
HTML和XHTML編寫區別XHTML要求編寫符合XML的語法。主要區別在于:
XML區分大小寫:以前很多、等都用大寫或大小寫混用如、或、”排版,但是XHTML統一要求需要用、小寫。
XML標簽必須閉合,單元素需要以/作為閉合結尾,嵌套不能出錯。比如:“ ”像這個標簽在html是可行的,但是為了xhtml的標準所以必須關閉如“ ”
XML屬性必須放在引號中。
XML屬性必須有屬性值,不能省略。比如:網頁里顯示圖片img標簽里都可加可不加alt屬性,但是現在xhtml要求必須加上alt屬性,不然xhtml驗證將提示錯誤,哪怕alt的值為空都可以。
XML中空格不會被自動刪除。
元素可提供有關頁面的元信息(meta-information),比如針對搜索引擎和更新頻度的描述和關鍵詞。
標簽位于文檔的頭部,不包含任何內容。 標簽的屬性定義了與文檔相關聯的名稱/值對。
常用列表如下:
meta viewport
在移動端開發,最常看到head里面設置了下面這個屬性:
常用的6個屬性:
width : 設置layout viewport 的寬度,為一個正整數,或字符串"width-device"
initial-scale:設置頁面的初始縮放值,為一個數字,可以帶小數
minimum-scale:允許用戶的最小縮放值,為一個數字,可以帶小數
maximum-scale:允許用戶的最大縮放值,為一個數字,可以帶小數
height:設置layout viewport 的高度,這個屬性并不重要,很少使用
user-scalable:是否允許用戶進行縮放,值為”no”或”yes”, no 代表不允許,yes代表允許
特殊說明:(IE6,7,8)支持,需要使用css3mediaqueries.js
X-UA-Compatible(瀏覽器采取何種版本渲染當前頁面)
說明:用于告知瀏覽器以何種版本來渲染頁面。(一般都設置為最新模式,在各大框架中這個設置也很常見。)舉例:
cache-control(指定請求和響應遵循的緩存機制)
說明:指定瀏覽器如何緩存某個響應以及緩存多長時間。舉例:
共有以下幾種用法:
- no-cache: 先發送請求,與服務器確認該資源是否被更改,如果未被更改,則使用緩存。 - no-store: 不允許緩存,每次都要去服務器上,下載完整的響應。(安全措施) - public : 緩存所有響應,但并非必須。因為max-age也可以做到相同效果。 - private : 只為單個用戶緩存,因此不允許任何中繼進行緩存。(比如說CDN就不允許緩存private的響應) - maxage : 表示當前請求開始,該響應在多久內能被緩存和重用,而不去服務器重新請求。例如:max-age=60表示響應可以再緩存和重用 60 秒。
關于瀏覽器緩存,可移步至:瀏覽器緩存機制
expires(網頁到期時間)
說明:用于設定網頁的到期時間,過期后網頁必須到服務器上重新傳輸。舉例:
Pragma(cache模式)
說明:是用于設定禁止瀏覽器從本地機的緩存中調閱頁面內容,設定后一旦離開網頁就無法從Cache中再調出 。舉例:
<meta http-equiv="pragma" content="no-cache">
Set-Cookie(cookie設定)
說明:如果網頁過期。那么這個網頁存在本地的cookies也會被自動刪除。舉例:
refresh(自動刷新并指向某頁面)
說明:網頁將在設定的時間內,自動刷新并調向設定的網址。舉例:
HTML語義化
根據內容的結構,選擇合適的標簽(代碼語義化)恰當地表示文檔結構,便于開發者閱讀的同時讓瀏覽器的爬蟲和機器很好地解析。
為什么要語義化?在沒有css的情況下,也能很好的展示內容結構、代碼結構。
提升用戶體驗:例如title、alt用于解釋名詞或解釋圖片信息、label標簽的活用。
有利于SEO:和搜索引擎建立良好的溝通,有助于爬蟲獲取更多有效的信息,爬蟲以來于標簽的上下文和各個關鍵字的權重。
方便其他設備解析(如屏幕閱讀器、盲人閱讀器、移動設備等)以有意義的方式渲染頁面。
便于團隊開發和維護,語義化更具可讀性,減少因為不遵循標準的差異化。
語義化標簽的推薦使用場景 自然語言表達能力的補充作為自然語言和純文本的補充
在 HTML5 中,就引入了這個表示 ruby 的標簽,它由ruby、rt、rp 三個標簽來實現。用于注音或者意思的注解。
漢
用來表達一定的結構或者消除歧義
比如當沒有上下文時,如何消除歧義呢?這就要用到我們的 em 標簽,em 表示重音:
今天我吃了一個 蘋果 。 今天我吃了 一個 蘋果。
實際上,不僅僅是讀音,這里的意思也發生了變化。前一段中,表示我今天吃的是蘋果,而不是別的什么東西,后一段中,則表示我今天只吃了一個蘋果,沒有多吃。
文章標題摘要語義化的 HTML 能夠支持自動生成目錄結構,HTML 標準中還專門規定了生成目錄結構的算法,即使我們并不打算深入實踐語義,也應該盡量在大的層面上保證這些元素的語義化使用。例如:
適合機器閱讀的整體結構HTML 語義
balah balah balah balah
弱語義
balah balah
...... 結構性元素
balah balah
隨著越來越多的瀏覽器推出“閱讀模式”,以及各種非瀏覽器終端的出現,語義化的 HTML 適合機器閱讀的特性變得越來越重要。
應用了語義化結構的頁面,可以明確地提示出頁面信息的主次關系,它能讓瀏覽器很好地支持“閱讀視圖功能”,還可以讓搜索引擎的命中率提升,同時,它也對視障用戶的讀屏軟件更友好。例如:
書寫HTML代碼時應該注意什么?…… …… ……
可能少的使用無語義的標簽div和span。
在語義不明顯時,既可以使用div或者p時,盡量用p, 因為p在默認情況下有上下間距,對兼容特殊終端有利。
不要使用純樣式標簽,如:b、font、u等,改用css設置。
需要強調的文本,可以包含在strong或者em標簽中(瀏覽器預設樣式,能用CSS指定就不用他們),strong默認樣式是加粗(不要用b),em是斜體(不用i)。具體原因,請移步至:HTML中strong與b,em與i標簽的區別
使用表格時,標題要用caption,表頭用thead,主體部分用tbody包圍,尾部用tfoot包圍。表頭和一般單元格要區分開,表頭用th,單元格用td。
表單域要用fieldset標簽包起來,并用legend標簽說明表單的用途。
每個input標簽對應的說明文本都需要使用label標簽,并且通過為input設置id屬性,在lable標簽中設置for=someld來讓說明文本和相對應的input關聯起來。
HTML5新增了哪些語義標簽?注意不要因為html5新標簽的出現,而隨意用之,錯誤的使用肯定會事與愿違。所以有些地方還是要用div的,就是因為div沒有任何意義的元素,他只是一個標簽,僅僅是用來構建外觀和結構。因此是最適合做容器的標簽。
header 元素代表“網頁”或section的頁眉。
通常包含h1-h6元素或hgroup,作為整個頁面或者一個內容塊的標題。也可以包裹一節的目錄部分,一個搜索框,一個nav,或者任何相關logo。
網站標題
網站副標題
header使用注意:
沒有個數限制。
如果hgroup或h1-h6自己就能工作的很好,那就不要用header。
footer元素代表“網頁”或section的頁腳,通常含有該節的一些基本信息,譬如:作者,相關文檔鏈接,版權資料。如果footer元素包含了整個節,那么它們就代表附錄,索引,提拔,許可協議,標簽,類別等一些其他類似信息。
footer使用注意:
沒有個數限制,除了包裹的內容不一樣,其他跟header類似。
hgroup元素代表“網頁”或section的標題,當元素有多個層級時,該元素可以將h1到h6元素放在其內,譬如文章的主標題和副標題的組合。
this is main title
this is sub title
hgroup使用注意:
如果只需要一個h1-h6標簽就不用hgroup。
如果有連續多個h1-h6標簽就用hgroup。
如果有連續多個標題和其他文章數據,h1-h6標簽就用hgroup包住,和其他文章元數據一起放入header標簽。
nav元素代表頁面的導航鏈接區域。用于定義頁面的主要導航部分。
nav使用注意:
用在整個頁面主要導航部分上,不合適就不要用nav元素。
aside元素被包含在article元素中作為主要內容的附屬信息部分,其中的內容可以是與當前文章有關的相關資料、標簽、名次解釋等。(特殊的section)
在article元素之外使用作為頁面或站點全局的附屬信息部分。最典型的是側邊欄,其中的內容可以是日志串連,其他組的導航,甚至廣告,這些內容相關的頁面。
this is content
aside使用總結:
aside在article內表示主要內容的附屬信息。
在article之外則可做側邊欄,沒有article與之對應,最好不用。
如果是廣告,其他日志鏈接或者其他分類導航也可以用。
section元素代表文檔中的“節”或“段”,“段”可以是指一篇文章里按照主題的分段;“節”可以是指一個頁面里的分組。
section通常還帶標題,雖然html5中section會自動給標題h1-h6降級,但是最好手動給他們降級。如下:
section是啥?
關于section
section的介紹
關于其他
關于其他section的介紹
section使用注意:
表示文檔中的節或者段。
article、nav、aside可以理解為特殊的section,所以如果可以用article、nav、aside就不要用section,沒實際意義的就用div。
article元素最容易跟section和div容易混淆,其實article代表一個在文檔,頁面或者網站中自成一體的內容,其目的是為了讓開發者獨立開發或重用。譬如論壇的帖子,博客上的文章,一篇用戶的評論,一個互動的widget小工具。(特殊的section)
一篇文章
文章內容..
article使用注意:
自身獨立的情況下:用article。
是相關內容:用section。
沒有語義的:用div。
address 標簽定義文檔作者/所有者的聯系信息。
Written by Jon Doe.
Visit us at:
Example.com
Box 564, Disneyland
USA
address使用注意:
不應該使用 address 標簽來描述郵政地址,除非這些信息是聯系信息的組成部分。
address 元素通常被包含在 footer 元素的其他信息中。
html5有哪些新特性、移除了那些元素? 新特性拖拽釋放(Drag and drop)API
語義化標簽(header、footer、nav、aside、article、section等)
音頻、視頻API(audio、video)
畫布(Canvas)API
地理(Geolocation) API
本地存儲:localStorage和sessionStorage
離線應用:manifest
桌面通知:Notifications
增強表單控件:date、time、url、search、email、calendar等
多任務:Web Worker
全雙工通信協議: Web Socket
歷史管理: History
頁面可見性改變事件: visibilitychange
跨窗口通信: PostMeaage
Form Data 對象
新增選擇器:document.querySelector、document.querySelectorAll
移除元素純表現元素:basefont、big、center、font、s、u、tt、strike
對可用性產生負面影響的元素: frameset、frame、noframes
如何處理HTML5新標簽的瀏覽器兼容問題?IE8/IE7/IE6支持通過document.createElement方法產生的標簽。
使用html5shim框架
Mobile:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/53623.html
以下是Java技術棧微信公眾號發布的關于 Java 的技術干貨,從以下幾個方面匯總。 Java 基礎篇 Java 集合篇 Java 多線程篇 Java JVM篇 Java 進階篇 Java 新特性篇 Java 工具篇 Java 書籍篇 Java基礎篇 8張圖帶你輕松溫習 Java 知識 Java父類強制轉換子類原則 一張圖搞清楚 Java 異常機制 通用唯一標識碼UUID的介紹及使用 字符串...
摘要:前言月份開始出沒社區,現在差不多月了,按照工作的說法,就是差不多過了三個月的試用期,準備轉正了一般來說,差不多到了轉正的時候,會進行總結或者分享會議那么今天我就把看過的一些學習資源主要是博客,博文推薦分享給大家。 1.前言 6月份開始出沒社區,現在差不多9月了,按照工作的說法,就是差不多過了三個月的試用期,準備轉正了!一般來說,差不多到了轉正的時候,會進行總結或者分享會議!那么今天我就...
閱讀 2240·2021-11-23 09:51
閱讀 1073·2021-11-22 15:35
閱讀 4831·2021-11-22 09:34
閱讀 1597·2021-10-08 10:13
閱讀 3017·2021-07-22 17:35
閱讀 2517·2019-08-30 15:56
閱讀 3079·2019-08-29 18:44
閱讀 3088·2019-08-29 15:32