關於HTML中的 <!DOCTYPE> 聲明

来源:https://www.cnblogs.com/mikelucis/archive/2020/07/02/13225624.html
-Advertisement-
Play Games

關於HTML中的 <!DOCTYPE> 聲明 今天在完成課程任務時,我的HTML代碼中一處出現了一個問題。 我現在有三張圖片,這三張圖片是從一張圖片無縫裁剪下來的,這三張圖片均等寬不等高,若使用PS可完美拼接回原圖。我在表格內,將此三張圖片放入,當瀏覽器運行時,我發現此三圖片並未完美緊密貼合,而是兩 ...


關於HTML中的 <!DOCTYPE> 聲明

今天在完成課程任務時,我的HTML代碼中一處出現了一個問題。

我現在有三張圖片,這三張圖片是從一張圖片無縫裁剪下來的,這三張圖片均等寬不等高,若使用PS可完美拼接回原圖。我在表格內,將此三張圖片放入,當瀏覽器運行時,我發現此三圖片並未完美緊密貼合,而是兩兩之間有著空隙。

question

源代碼:
#time 2020-05-19

<!DOCTYPE>
<html>
  <head>
        <title>...</title>
  </head>
   <body>
     <table width="457" height="263" border="0" cellspacing="0" cellpadding="0">
        <tbody>
           <tr>
              <td>
                  <img src="h2.gif" width="457" height="90" alt=""/>
                  <img src="h3.gif" width="457" height="71" alt=""/>
                  <img src="h4.gif" width="457" height="102" alt=""/>
               </td>
           </tr>
         </tbody>
      </table>
    </body>
</html>

以上就是出現此問題處源代碼大致的框架,

詳細可見表格標簽中已明確聲明寬高,且spacing也為0,那是什麼原因導致出現排版混亂的情況呢。

說到這,我們就要提到一個重要的標簽 :

<!DOCTYPE>

DOCTYPE是Document Type(文檔類型)的簡寫,要想製作符合標準的頁面,一個必不可少的關鍵組成部分就是DOCTYPE聲明。

  • !DOCTYPE 聲明標簽處於HTML首行,其作用是聲明本HTML文檔的解析類型(document.compatMode),從而使瀏覽器正確識別文檔應該以哪種模式渲染。避免以瀏覽器的怪異模式進行渲染。

  • 其不是一個真正的HTML 標簽;它是用來告知 Web 瀏覽器頁面使用了哪種 HTML 版本;故 !DOCTYPE 沒有結束標簽,同時也對大小寫不敏感。

  • ( HTML 4.01 中,<!DOCTYPE> 聲明需引用 DTD (文檔類型聲明),因為 HTML 4.01 是基於 SGML (Standard Generalized Markup Language 標準通用標記語言)。DTD 指定了標記語言的規則,確保了瀏覽器能夠正確的渲染內容;)

  • (HTML5 不是基於 SGML,因此不要求引用 DTD;)

    CSS1Compat:標準模式,瀏覽器使用W3C的標準解析渲染頁面;
    BackCompat:怪異模式,瀏覽器使用自己的怪異模式解析渲染頁面。

此處我的文檔HTML版本是4.1版本的,我卻使用了HTML5的聲明,瀏覽器檢測出錯便預設使用了BackCompat模式進行網頁渲染,難怪文檔排版出現了問題。

我們將聲明修改成Transitional過渡模式,即告訴瀏覽器文檔的正確模式,避免瀏覽器進入轉換顯示模式(怪異模式)。

文檔排版恢復正常,問題解決。

yesright

當然也有其他方法:

  • 圖片標簽樣式\屬性:

    • style=“margin-top:-4px”
      (數值具情況調整)

    • .img {border:0px; margain:0px; padding:0px }

      .img {padding: 0; margin: 0;}
      (數值具情況調整)

    • vertical-align: middle;
      元素的垂直對齊方式

    • display:block;
      把標簽轉換成塊級元素

    • line-height:0;

      給img添加一個父級 div ,並添加 line-height:

常見的 DOCTYPE 聲明

HTML 5

<!DOCTYPE html>

HTML 4.1

(HTML4.01中有3種DTD(文檔類型定義)聲明可以選擇:過渡的(Transitional)、嚴格的(Strict)和框架的(Frameset))

HTML4.01 Transitional

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
# 寫給瀏覽器,避免瀏覽器進入轉換顯示模式。(過渡)

HTML4.01 Strict

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
# 嚴格模式。

HTML4.01 Frameset

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

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

-Advertisement-
Play Games
更多相關文章
  • 面試形式:電話面試 作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:761407670 進群密碼‘博客’,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿裡面試題、面試經驗,討論技術, 大家一起交流學習成長! 1. 你平時怎麼解決網路請求的依賴關係:當一個介面的請求需 ...
  • 前言 最近做一個簡單的應用,使用到了一些WebView的相關知識,這裡做一些總結。 為WebView中的輸入框賦值 讀取WebView控制項中的值 執行WebView中網頁的方法 註入一段js代碼,為一個控制項賦值一個點擊方法 讀取WebView網頁中的表格. 一、為輸入框賦值和取值 首先,載入網頁的方 ...
  • 前端開發當中最有意思的就是實現動畫特效,Flutter提供的各種動畫組件可以方便實現各種動畫效果。Flutter中的動畫組件主要分為兩類: 隱式動畫控制項:只需設置組件開始值,結束值,執行時間,比如AnimatedOpacity,AnimatedSize等組件。 顯式動畫控制項:需要設置Animatio ...
  • break語句描述:break語句,用於無條件結束各種迴圈(退出迴圈)和switch。說明:一般情況下,需要在break語句之前加一個條件判斷。換句話說:就是條件成立了,就退出迴圈。continue語句描述:結束本次迴圈,而開始下一次迴圈。continue之後的代碼不再執行了。說明:一般情況下,需要 ...
  • if條件判斷語句:條件成立,執行什麼代碼;條件不成立,執行什麼代碼結構一:只判斷真(true),條件為假,什麼也不做if(條件判斷:判斷結果是一個布爾值){條件為真(true),執行的代碼} 結構二:既判斷真,也判斷假 if(條件判斷){條件為真,執行的代碼}else{條件為假,執行的代碼} 結構三 ...
  • Koch曲線的構造過程是:取一條長度為L0的直線段,將其三等分,保留兩端的線段,將中間的一段改換成夾角為60度的兩個等長直線;再將長度為L0/3的4個直線段分別進行三等分,並將它們中間的一段均改換成夾角為60度的兩段長為L0/9的直線段;重覆以上操作直至無窮,可得以一條具有自相似結構的折線,如圖1所 ...
  • 1 問題 當使用pdfjs來實現預覽功能的時候,遇到了2個問題: 一是帶寬占用過大,會下載整個pdf文件,這對部署在公網的應用來說,成本壓力很大,因為雲服務帶寬是很貴的。 二是記憶體占用過大,一個80M的pdf,在預覽時占用記憶體高達600M,在一些記憶體較小的手機上容易發生崩潰。 pdfjs預設配置下, ...
  • 1.圖片標簽 img src:圖片路徑 width:設置圖片的寬度,如果是單獨設置,則保存圖片比例進行修改,單位可以是px和% height:設置圖片的高度,如果是單獨設置,則保存圖片比例進行修改,單位可以是px和% title:滑鼠放在圖片上提示圖片名稱 alt:當圖片路徑有誤的時候用來提示 路徑 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...