前端開發(fā)規(guī)范(W3C筆記)

基本原則


結(jié)構(gòu)碍讯、樣式属瓣、行為分離

盡量確保文檔和模板只包含HTML結(jié)構(gòu),樣式都放到樣式表里棒仍,行為都放到腳本里悲靴。

縮進

統(tǒng)一兩個空格縮進(總之就是縮進統(tǒng)一即可),不要使用Tab或者Tab莫其、空格混搭癞尚。

文件編碼

使用不帶BOM的UTF-8編碼。

  • 在HTML中指定編碼
<meta charset="utf-8">
  • 無需使用@charset指定樣式表的編碼乱陡,它默認(rèn)為UTF-8

一律使用小寫字母

<!-- Recommended -->
![](google.png)

<!-- Not Recommended -->
<A HREF="/">HOME</A>
/* Recommended */
color: #e5e5e5;

/* Not Recommended */
color: #E5E5E5;

省略外鏈資源URL協(xié)議部分

省略外鏈資源(圖片及其它媒體資源)URL中的http/https協(xié)議浇揩,使URL成為相對地址,避免Mixed Content問題憨颠,減小文件字節(jié)數(shù)胳徽。
其它協(xié)議(ftp等)的URL不省略。

<!-- Recommended -->
<script src="http://www.w3cschool.cn/statics/js/autotrack.js"></script>

<!-- Not recommended -->
<script src="http://www.w3cschool.cn/statics/js/autotrack.js"></script>
/* Recommended */
.example {
  background: url(//www.google.com/images/example);
}

/* Not recommended */
.example {
  background: url(http://www.google.com/images/example);
}

統(tǒng)一注釋

HTML注釋

  • 模塊注釋
<!-- 文章列表列表模塊 -->
<div class="article-list">
...
</div>
  • 區(qū)塊注釋
<!--
@name: Drop Down Menu
@description: Style of top bar drop down menu.
@author: Ashu(Aaaaaashu@gmail.com)
-->

CSS注釋
組件塊和子組件塊以及聲明塊之間使用一空行分隔爽彤,子組件塊之間三空行分隔养盗。

/* ==========================================================================
   組件塊
 ============================================================================ */

/* 子組件塊
 ============================================================================ */

.selector {
  padding: 15px;
  margin-bottom: 15px;
}

/* 子組件塊
 ============================================================================ */

.selector-secondary {
  display: block; /* 注釋*/
}

.selector-three {
  display: span;
}

Javascript注釋

  • 單行注釋
    必須獨占一行//后跟一個空格适篙,縮進與下一行被注釋說明的代碼一致往核。
  • 多行注釋
    避免使用/*...*/這樣的多行注釋。有多行注釋內(nèi)容時嚷节,使用多個單行注釋聂儒。
  • 函數(shù)/方法注釋
  • 函數(shù)/方法注釋必須包含函數(shù)說明,有參數(shù)和返回值時必須使用注釋標(biāo)識硫痰;
  • 參數(shù)和返回值注釋必須包含類型信息和說明衩婚;
  • 當(dāng)函數(shù)是內(nèi)部函數(shù),外部不可訪問時碍论,可以使用 @inner 標(biāo)識谅猾;
/**
 * 函數(shù)描述
 *
 * @param {string} p1 參數(shù)1的說明
 * @param {string} p2 參數(shù)2的說明,比較長
 *     那就換行了.
 * @param {number=} p3 參數(shù)3的說明(可選)
 * @return {Object} 返回值描述
 */functionfoo(p1, p2, p3){
    var p3 = p3 || 10;
    return {
        p1: p1,
        p2: p2,
        p3: p3
    };
}

文件注釋

文件注釋用于告訴不熟悉這段代碼的讀者這個文件中包含哪些東西鳍悠。 應(yīng)該提供文件的大體內(nèi)容, 它的作者, 依賴關(guān)系兼容性信息税娜。如下:

/**
 * @fileoverview Description of file, its uses and information
 * about its dependencies.
 * @author user@meizu.com (Firstname Lastname)
 * Copyright 2015 Meizu Inc. All Rights Reserved.
 */

代碼驗證

  • 使用W3C HTML Validator來驗證你的HTML代碼的有效性;
  • 使用W3C CSS Validator來驗證你的CSS代碼有效性;

代碼驗證不是最終目的,真的目的在于讓開發(fā)者在經(jīng)過多次的這種驗證過程后藏研,能夠深刻理解到怎樣的語法或?qū)懛?/strong>是非標(biāo)準(zhǔn)和不推薦的敬矩,即使在某些場景下被迫要使用非標(biāo)準(zhǔn)寫法,也可以做到心中有數(shù)蠢挡。

通用約定


標(biāo)簽

  • 自閉合(self-closing)標(biāo)簽廊酣,無需閉合(例如:img input br hr 等);
  • 可選的閉合標(biāo)簽(closing tag)氧急,需閉合(例如:</li></body>)柒瓣;
  • 盡量減少標(biāo)簽數(shù)量洪燥;
![](//img.w3cschool.cn/attachments/image/cimg/google.png)
<input type="text" name="title">

<ul>
  <li>Style</li>
  <li>Guide</li>
</ul>

<!-- Not recommended -->
<span class="avatar">
  ![](...)
</span>

<!-- Recommended -->
![](...)

Class與ID

  • class應(yīng)以功能或內(nèi)容命名,不以表現(xiàn)形式命名;
  • class與id單詞字母小寫,多個單詞組成時柳恐,采用中劃線-分隔;
  • 使用唯一的id作為Javascript hook热幔,同時避免創(chuàng)建無樣式信息的class乐设;
<!-- Not recommended -->
<div class="j-hook left contentWrapper"></div>

<!-- Recommended -->
<div id="j-hook" class="sidebar content-wrapper"></div>

屬性順序

HTML屬性應(yīng)該按照特定的順序出現(xiàn)以保證易讀性

  • id
  • class
  • name
  • data-xx
  • src, for, type, href
  • title, alt
  • aria-xxx, role
<a id="..." class="..." data-modal="toggle" href="###"></a>

<input class="form-control" type="text">

![](...)

引號

屬性的定義绎巨,統(tǒng)一使用雙引號近尚。

<!-- Not recommended -->
<span id='j-hook' class=text>Google</span>

<!-- Recommended -->
<span id="j-hook" class="text">Google</span>

嵌套

a不允許嵌套div 這種約束屬于語義嵌套約束,與之區(qū)別的約束還有嚴(yán)格嵌套約束场勤,比如a不允許嵌套a戈锻。
嚴(yán)格嵌套約束在所有的瀏覽器下都不被允許;而語義嵌套約束却嗡,瀏覽器大多會容錯處理舶沛,生成的文檔樹可能相互不太一樣嘹承。

語義嵌套約束

  • <li>用于<ul><ol>下窗价;
  • <dd>,<dt>用于<dl>之下;
  • <thead> , <tbody>, <tfoot>, <tr>, <td>用于<table>下叹卷;

嚴(yán)格嵌套約束

  • inline-Level元素撼港,僅可以包含文本或其他inline-Level元素;
  • <a>里不可以嵌套交互式元素<a>骤竹、 <button>帝牡、 <select>等;
  • <p>里不可以嵌套塊級元素<div>蒙揣、 <h1>~<h6>靶溜、<p><ul>/<ol>/<li>懒震、 <dl>/<dt>/<dd>罩息、 <form>等。

布爾值屬性

HTML5規(guī)范中disabled个扰、 checked瓷炮、 selected等屬性不用設(shè)置值。

<input type="text" disabled>

<input type="checkbox" value="1" checked>

<select>
  <option value="1" selected>1</option>
</select>

語義化


沒有cssHTML是一個語義系統(tǒng)而不是UI系統(tǒng)递宅。
通常情況下娘香,每個標(biāo)簽都是有語義的苍狰,所謂語義就是你的衣服分為外套、褲子烘绽、裙子淋昭、內(nèi)褲等,各自有對應(yīng)的功能和含義安接。所以你總不能把內(nèi)褲套在脖子上吧响牛。
此外,語義化的HTML結(jié)構(gòu)赫段,有助于機器(搜索引擎)理解呀打,另一方面多人協(xié)作時,能迅速了解開發(fā)者的意圖糯笙。

常見標(biāo)簽語義

標(biāo)簽 語義
<p> 段落
<h1> <h2> <h3> ··· 標(biāo)題
<ul> 無序列表
<ol> 有序列表
<blockquote> 大段引用
<cite> 一般引用
<b> 為樣式加粗而加粗
<strong> 為強調(diào)內(nèi)容而加粗
<i> 為樣式傾斜而傾斜
<em> 為強調(diào)內(nèi)容而傾斜
code 代碼標(biāo)識
abbr 縮寫

示例

將你構(gòu)建的頁面當(dāng)作一本書贬丛,將標(biāo)簽的語義對應(yīng)的其功能和含義;

  • 書的名稱: <h1>
  • 書的每個章節(jié)標(biāo)題: <h2>
  • 章節(jié)內(nèi)的文章標(biāo)題: <h3>
  • 小標(biāo)題/副標(biāo)題: <h4> <h5> <h6>
  • 章節(jié)的段落: <p>

HEAD


文檔類型

為每個HTML頁面的第一行添加標(biāo)準(zhǔn)模式(standard mode)的聲明给涕,這樣能夠確保在每個瀏覽器中擁有一致的表現(xiàn)豺憔。

<!DOCTYPE html>

語言屬性

為什么使用lang="zh-cmn=Hans"而不是我們通常寫的lang="zh-CN"呢?請參考:https://www.zhihu.com/question/20797118

<!-- 中文 -->
<html lang="zh-Hans">

<!-- 簡體中文 -->
<html lang="zh-cmn-Hans">

<!-- 繁體中文 -->
<html lang="zh-cmn-Hnat">

<!-- Enlish -->
<html lang="en">

字符編碼

  • 以無BOM的utf-8編碼作為文件格式够庙;
  • 指定字符編碼的meta必須是head的第一個直接子元素恭应;
<html>
  <head>
    <meta charset-"utf-8">
    ···
  </head>
  <body>
    ···
  </body>
</html>

IE兼容模式

優(yōu)先使用最新版本的IE和Chrome內(nèi)核

<meta http-equiv="X-UA-Cimpatible" content="IE=edge,chrome=1">

SEO優(yōu)化

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市耘眨,隨后出現(xiàn)的幾起案子昼榛,更是在濱河造成了極大的恐慌,老刑警劉巖剔难,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胆屿,死亡現(xiàn)場離奇詭異,居然都是意外死亡偶宫,警方通過查閱死者的電腦和手機非迹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纯趋,“玉大人憎兽,你說我怎么就攤上這事〕趁埃” “怎么了纯命?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長桦锄。 經(jīng)常有香客問我扎附,道長,這世上最難降的妖魔是什么结耀? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任留夜,我火速辦了婚禮匙铡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘碍粥。我一直安慰自己鳖眼,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布嚼摩。 她就那樣靜靜地躺著钦讳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枕面。 梳的紋絲不亂的頭發(fā)上愿卒,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音潮秘,去河邊找鬼琼开。 笑死,一個胖子當(dāng)著我的面吹牛枕荞,可吹牛的內(nèi)容都是我干的柜候。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼躏精,長吁一口氣:“原來是場噩夢啊……” “哼渣刷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起矗烛,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤辅柴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后高诺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碌识,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡碾篡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年虱而,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片开泽。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡牡拇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出穆律,到底是詐尸還是另有隱情惠呼,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布峦耘,位于F島的核電站剔蹋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辅髓。R本人自食惡果不足惜泣崩,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一少梁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧矫付,春花似錦凯沪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至杀赢,卻和暖如春烘跺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脂崔。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工液荸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人脱篙。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓娇钱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绊困。 傳聞我的和親對象是個殘疾皇子文搂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 此手冊主要實現(xiàn)的目標(biāo):代碼一致性和最佳實踐。通過代碼風(fēng)格的一致性秤朗,降低維護代碼的成本以及改善多人協(xié)作的效率煤蹭。同時遵...
    _blow閱讀 375評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)取视,斷路器硝皂,智...
    卡卡羅2017閱讀 134,661評論 18 139
  • 什么是html? html是一種網(wǎng)頁標(biāo)記語言作谭,叫超文本標(biāo)記語言稽物,我們平時上網(wǎng)所看到的所有網(wǎng)頁均來自于html,英文...
    波段頂?shù)?/span>閱讀 8,370評論 2 7
  • 1 前言 HTML 作為描述網(wǎng)頁結(jié)構(gòu)的超文本標(biāo)記語言折欠,一直有著廣泛的應(yīng)用贝或。本文檔的目標(biāo)是使 HTML 代碼風(fēng)格保持...
    山豆山豆閱讀 1,185評論 2 6
  • 最佳原則 堅持制定好的代碼規(guī)范。無論團隊人數(shù)多少锐秦,代碼應(yīng)該同出一門咪奖。如果你想要為這個規(guī)范做貢獻或覺得有不合理的地方...
    Tiny_ae3d閱讀 1,637評論 0 1