<!DOCTYPE> 標簽的定義與使用

来源:https://www.cnblogs.com/wbyang/archive/2019/09/16/11530636.html
-Advertisement-
Play Games

<!DOCTYPE>標簽的定義 <!DOCTYPE> 聲明位於文檔中最前面的位置,處於<html>標簽之前。<!DOCTYPE> 聲明不是一個HTML標簽,它是告知Web瀏覽器該頁面使用了哪種HTML版本(規範),瀏覽器用此版本(規範)對該文檔進行解析,渲染。 <!DOCTYPE> 可聲明的 DTD ...


<!DOCTYPE>標簽的定義   

    

  <!DOCTYPE> 聲明位於文檔中最前面的位置,處於<html>標簽之前。<!DOCTYPE> 聲明不是一個HTML標簽,它是告知Web瀏覽器該頁面使用了哪種HTML版本(規範),瀏覽器用此版本(規範)對該文檔進行解析,渲染
       <!DOCTYPE> 可聲明的 DTD 有三種:分別是嚴格版本(strict)過渡版本(transitional)、以及基於框架的版本(frameset),若文檔不遵循其DTD規範,則此文檔中的代碼不但不能通過代碼校驗,並且有可能無法正常顯示。

 

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <!--HTML5示例-->
 5         <meta charset="utf-8"> 
 6         <title>文檔標題</title>
 7     </head> 
 8     <body>
 9         文檔內容......
10     </body>
11 </html>

 

 

<!DOCTYPE>標簽的使用

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

 

  在以上聲明中,此文檔的根元素被聲明為HTML,他在公共標識符被定義為 “-//W3C//DTD HTML 4.01//EN” 的DTD中進行了定義,瀏覽器會明白如何尋找與該公共標識符匹配的DTD,如果找不到,瀏覽器將會使用公共標識符後面的 URL 來尋找DTD的位置。

  -/+:"-“表示組織名稱未註冊,Internet 工程任務組(IETF)和萬維網協會(W3C)並非註冊的 ISO 組織,”+"表示組織名稱已註冊;
  DTD:指公開文本類,即所用的對象類型。預設為DTD;
  HTML:公開文本描述,即對所引用的公開文本的唯一描述性名稱。後面可附帶版本號。預設為HTML;
  URL: 指定所引用對象的位置。
 

 

HTML的文檔類型

HTML4.01 的文檔類型

HTML 4.01 規定了三種文檔類型:StrictTransitional 以及 Frameset

  嚴格版本(strict) 的DTD 包含所有 HTML 元素和屬性,但不包括表象或過時的元素(如 font )。框架集是不允許的。

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


  過渡版本(transitional) 的DTD 包含所有 HTML 元素和屬性,包括表象或過時的元素(eg:font ),框架集是不允許的。

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


  基於框架的版本(frameset) 的DTD 與 HTML 4.01 Transitional 相同,但是允許使用框架集內容。

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

 

HTML5 的文檔類型

HTML4.01 中的DOCTYPE需要對 DTD 進行引用,因為 HTML4.01 基於 SGML。而 HTML5 不基於SGML,因此不需要對 DTD 進行引用,但是需要DOCTYPE來規範瀏覽器的行為(讓瀏覽器按照它們應該的方式來運行)。

1 <!DOCTYPE html>

 

XHTML1.0 的文檔類型

XHTML 1.0 規定了三種文檔類型:StrictTransitional 以及 Frameset

  嚴格版本(strict) 的DTD 包含所有 HTML 元素和屬性,但不包括表象或過時的元素(如 font )。框架集是不允許的。結構必須按標準格式的 XML 進行書寫。

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


  過渡版本(transitional) 的DTD 包含所有 HTML 元素和屬性,包括表象或過時的元素(如 font )。框架集是不允許的。結構必須按標準格式的 XML 進行書寫。

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


  基於框架的版本(frameset) 的DTD 與 XHTML 1.0 Transitional 相同,但是允許使用框架集內容。

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

 

 

XHTML 1.1 的文檔類型

  該DTD 與 XHTML 1.0 Strict 相同,但是允許您添加模塊(例如為東亞語言提供 ruby 支持)。

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

 

 

三種類型文檔的區別

       嚴格版本:
              它將文檔結構與表現形式實現了更高的分離,所以,頁面的外觀要用CSS來控制。

       過渡版本:
              它包含了HTML4.01版本的全部標記,方便網頁開發者順利地從HTML的使用過渡到XHTML

       基於框架的版本:
              它使用<frameset>以框架的形式將網頁分為多個文檔。W3C是推薦使用XHTML的,而且使用XHTML的話可以更順利地通過W3C對網頁頁面的驗證

 

 

註意

       1. 頁面引用哪種規範就要用那種規範允許或推薦使用的標簽。

       2. 如果沒有指定有效的DOCTYPE聲明,大多數瀏覽器都會使用一個內建的預設dtd。在這種情況下, 瀏覽器會用內建的dtd來試著顯示你所指定的標記,這將違背HTML規範的意義,不建議使用這種方式。

       3. 當doctype申明缺失或者格式不正確時,文檔會以相容模式呈現。
           標準模式:排版以及js運行模式都是以瀏覽器支持的最高標準運行;
           相容模式:頁面以寬鬆的向後相容(向老版本相容)方式顯示,模擬老瀏覽器的行為防止(老)站點無法正常工作。

 

 

其他

       <!DOCTYPE html> 是 HTML5 中唯一的 DOCTYPE,也被視作將網頁 “升級” 到 HTML5 的第一步。很多國外網站的<!DOCTYPE><head>之間都會有一段註釋,如:

1 <!—[if IE 6 ]><html class="ie ielt9 ielt8 ielt7 ie6" lang="en-US"><![endif]—>
2 <!—[if IE 7 ]><html class="ie ielt9 ielt8 ie7" lang="en-US"><![endif]—>
3 <!—[if IE 8 ]><html class="ie ielt9 ie8" lang="en-US"><![endif]—>
4 <!—[if IE 9 ]><html class="ie ie9" lang="en-US"><![endif]—>
5 <!—[if (gt IE 9)|!(IE)]><!—><html lang="en-US"><!—<![endif]—>

 

       該代碼作用於 css,來寫一些針對IE各版本的樣式差異。先判斷用戶用的哪個 IE 版本,然後在標簽上加上該版本的 class,這樣可以方便 hack。
css 文件是這樣寫的:

1 .ie6 xxx {};
2 .ie7 xxx {};

       這是目前最好的 hack 方式之一。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 修改前 修改後 6.0 Recovery 模式橫屏修改方法 修改相關文件 bootable\recovery\minui\Android.mk bootable\recovery\minui\mt_graphic_rotate.cpp bootable\recovery\minui\mt_graph ...
  • 最近一直在學習uni-app開發,由於uniapp是基於vue.js技術開發的,只要你熟悉vue,基本上很快就能上手了。 在開發中發現uni-app原生導航欄也能實現一些頂部自定義按鈕+搜索框,只需在page.json裡面做一些配置即可。設置app-plus,配置編譯到App平臺的特定樣式。dclo ...
  • 一、邊框屬性 1.連寫(分別設置四條邊的邊框) 註意點: (1)這三個屬性是按照順時針來賦值的,也就是說按照上右下左來賦值,而不是按照日常生活中的上下左右 (2)關於省略 i.三個(省略左)左右一樣,上下按照咱們寫的 ii.兩個(省略左、下)左右一樣,上下一樣 ii.一個(省略右、左、下)這四個全都 ...
  • 動態原型模型 組合使用構造函數模型和原型模型,使得OO語言程式員在看到獨立的構造函數和原型時很困惑。動態原型模型致力於解決該問題,它把所有的信息封裝在構造函數中,通過在構造函數中初始化原型(僅在必要情況下),同時又使用構造函數和原型的優點。 實例代碼如下: 寄生構造函數模型 基本思想:創建一個函數, ...
  • 該模型為創建自定義類型最常用的方式。 部分摘自《JavaScript高級程式設計(第3版)》 ...
  • 今天在學習查閱代碼的時候,發現了一個不認識的CSS代碼,於是進行學習。 效果圖 使圖片在對應的元素內以不同的方式進行垂直對齊 ...
  • 工廠模型抽象了創建具體對象的過程,以下示例代碼說明工廠類型: 部分摘自《JavaScript高級程式設計(第3版)》 ...
  • JavaScript 基礎入門 JavaScript 的組成 JS 由三部分組成,它們分別是:ECMAScript、DOM、BOM. ECMAScript 因為網景開發了JavaScript,一年後微軟又模仿JavaScript開發了JScript,為了讓JavaScript成為全球標準,幾個公司聯 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...