前端規範之HTML 規範

小婉發表於2019-06-18

其他規範:

CSS 規範

媒體檔案規範

javascript 規範

nodeJs 規範

vue專案規範

前端規範之HTML 規範

摘要

優秀的專案原始碼,即使是多人開發,看程式碼也如出一人之手。統一的編碼規範,可使程式碼更易於閱讀,易於理解,易於維護

HTML 規範

縮排

統一兩個空格縮排

命名規範

  • class 應以功能或內容命名,不以表現形式命名;
  • class 與 id 單詞字母小寫,多個單片語成時,採用中劃線-分隔;
  • 使用唯一的 id 作為 Javascript hook, 同時避免建立無樣式資訊的 class;

DOCTYPE 宣告

HTML 檔案必須加上 DOCTYPE 宣告,並統一使用 HTML5 的文件宣告:

<!DOCTYPE html>
複製程式碼

meta 標籤

  • 統一使用 “UTF-8” 編碼
<meta charset="utf-8">
複製程式碼
  • SEO 優化
<!-- 頁面關鍵詞 -->
<meta name ="keywords" content =""/>
<!-- 頁面描述 -->
<meta name ="description" content ="">
<!-- 網頁作者 -->
<meta name ="author" content ="">
複製程式碼
  • 優先使用 IE 最新版本和 Chrome
<meta http-equiv ="X-UA-Compatible" content ="IE = edge,chrome = 1">
複製程式碼
  • 為移動裝置新增視口
<!-- device-width 是指這個裝置最理想的 viewport 寬度 -->
<!-- initial-scale=1.0 是指初始化的時候縮放大小是1,也就是不縮放 -->
<!-- user-scalable=0 是指禁止使用者進行縮放 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
複製程式碼
  • 禁止自動識別頁面中有可能是電話格式的數字
<meta name="format-detection" content="telephone=no">
複製程式碼

團隊約定:

pc 端:

<meta charset="utf-8">
<meta name="keywords" content="your keywords">
<meta name="description" content="your description">
<meta name="author" content="author,email address">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
複製程式碼

移動端:

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<meta name="format-detection" content="telephone=no">
複製程式碼

標籤

html 標籤分為以下幾類:

  • 自閉合標籤(self-closing),無需閉合。例如:area、base、br、col、command、embed、hr、img、input、keygen、link、meta、param、source、track、wbr 等 )
  • 閉合標籤(closing tag),需閉合 。例如:textarea、title、h、div、span 等

團隊約定:

  • 所有具有開始標籤和結束標籤的元素都必須要寫上起止標籤,某些允許省略開始標籤或和束標籤的元素亦都要寫上
  • 自閉合標籤不要加上結束標籤
  • 自定義標籤的名字必須包含一個破折號(-),<x-tags><my-element><my-awesome-app>都是正確的名字,而<tabs><foo_bar>是不正確的。這樣的限制使得 HTML 解析器可以分辨那些是標準元素,哪些是自定義元素
  • 自定義標籤必須寫上開始標籤和閉合標籤
  • 儘量減少標籤數量

元素屬性

  • 元素屬性值使用雙引號語法

推薦:

<input type="text">
複製程式碼

不推薦:

<input type=text>
<input type='text'>
複製程式碼

程式碼巢狀

  • 塊元素可以包含內聯元素或某些塊元素,但內聯元素卻不能包含塊元素,它只能包含其它的內聯元素
  • 標題和段落中不能包含塊,如:h1、h2、h3、h4、h5、h6、p、dt
  • 塊與內聯不能並列,塊級元素與塊級元素並列、內嵌元素與內嵌元素並列
  • 有些標籤是固定的巢狀規則,比如 ul 包含 li、ol 包含 li、dl 包含 dt 和 dd 等等。

靈活使用偽類

不要讓非內容資訊汙染了你的 HTML,打亂了 HTML 結構。可以使用:before、:after 等偽類元素

推薦:

HTML 程式碼

<!-- That is clean markup! -->
<span class="text-box">
  See the square next to me?
</span>

複製程式碼

CSS 程式碼:

/* We use a :before pseudo element to solve the design problem of placing a colored square in front of the text content */
.text-box:before {
  content: '';
  display: inline-block;
  width: 1rem;
  height: 1rem;
  background-color: red;
}
複製程式碼

不推薦:

HTML 程式碼:

<!-- We should not introduce an additional element just to solve a design problem  -->
<span class="text-box">
  <span class="square"></span>
  See the square next to me?
</span>
複製程式碼

CSS 程式碼:

.text-box > .square {
  display: inline-block;
  width: 1rem;
  height: 1rem;
  background-color: red;
}
複製程式碼

特殊符號必須使用轉義符

符號 描述 轉義符
空格 &nbsp;
< 小於 &lt;
> 大於 &gt;
& &amp;
" 引號 &quot;

純數字輸入框

使用 type="tel" 而不是 type="number"

<input type="tel">
複製程式碼

型別屬性

不需要為 CSS、JS 指定型別屬性,HTML5 中預設已包含。

推薦:

<link rel="stylesheet" href="" >
<script src=""></script>
複製程式碼

不推薦:

<link rel="stylesheet" type="text/css" href="" >
<script type="text/javascript" src="" ></script>
複製程式碼

註釋規範

單行註釋

  • 一般用於簡單的描述,如某些狀態描述、屬性描述等
  • 註釋內容前後各一個空格字元,註釋位於要註釋程式碼的上面,單獨佔一行

推薦:

<!-- Comment Text -->
<div>...</div>
複製程式碼

不推薦:

<div>...</div><!-- Comment Text -->

<div><!-- Comment Text -->
    ...
</div>
複製程式碼

模組註釋

  • 註釋內容前後各一個空格字元
  • <!-- S Comment Text -->表示模組開始
  • <!-- E Comment Text -->表示模組結束,模組與模組之間相隔一行
  • 模組註釋內部巢狀模組註釋,<!-- /Comment Text -->

推薦:

<!-- S Comment Text A -->
<div class="mod_a">

    <div class="mod_b">
        ...
    </div>
    <!-- /mod_b -->

    <div class="mod_c">
    	...
    </div>
    <!-- /mod_c -->

</div>
<!-- E Comment Text A -->

<!-- S Comment Text D -->
<div class="mod_d">
    ...
</div>
<!-- E Comment Text D -->
複製程式碼

語義化

  • 沒有 CSS 的 HTML 是一個語義系統而不是 UI 系統
  • 通常情況下,每個標籤都是有語義的
  • 語義化的 HTML 結構,有助於機器(搜尋引擎)理解,另一方面多人協作時,能迅速瞭解開發者意圖
  • 建議頁面中多使用語義化標籤,而不是整個頁面以 div 構成

常見標籤語義:

標籤 語義
<p> 段落
<hn> 標題(h1~h6)
<ul> 無序列表
<ol> 有序列表
<nav> 標記導航,僅對文件中重要的連結群使用
<main> 頁面主要內容,一個頁面只能使用一次。如果是 web 應用,則包圍其主要功能
<article> 定義外部的內容,其中的內容獨立於文件的其餘部分
<section> 定義文件中的節(section、區段)。比如章節、頁首、頁尾或文件中的其他部分。
<aside> 定義其所處內容之外的內容。如側欄、文章的一組連結、廣告、友情連結、相關產品列表
<header> 頁首通常包括網站標誌、主導航、全站連結以及搜尋框
<footer> 頁尾,只有當父級是 body 時,才是整個頁面的頁尾
<figure> 規定獨立的流內容(影像、圖表、照片、程式碼等等)(預設有 40px 左右 margin)

相關文章