本文檔定義了HTML/CSS的編寫格式和風格規則。它旨在提升合做和代碼質量,並使其支持基礎架構。適用於HTML/CSS文件,包括GSS文件。 只要代碼質量是能夠被維護的,就能很好的被工具混淆、壓縮和合並。javascript
省略圖像、媒體文件、樣式表和腳本等URL協議頭部聲明 ( http:
, https:
)。若是不是這兩個聲明的URL則不省略。css
省略協議聲明,使URL成相對地址,防止內容混淆問題和致使小文件重複下載。html
<!-- 不推薦 --> <script src="http://www.google.com/js/gweb/analytics/autotrack.js"></script>
<!-- 推薦 --> <script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>
/* 不推薦 */ .example { background: url(http://www.google.com/images/example); }
/* 推薦 */ .example { background: url(//www.google.com/images/example); }
讓你的編輯器用沒有字節順序標記的UTF-8編碼格式進行編寫。api
在HTML模板和文件中指定編碼 <meta charset="utf-8">
. 不須要制定樣式表的編碼,它默認爲UTF-8.瀏覽器
(更多有關於編碼的信息和怎樣指定它,請查看 Character Sets & Encodings in XHTML, HTML and CSS。)架構
HTML5是目前全部HTML文檔類型中的首選: <!DOCTYPE html>
.
(推薦用HTML文本文檔格式,即 text/html
. 不要用 XHTML。 XHTML格式,即 application/xhtml+xml
, 有倆瀏覽器徹底不支持,還比HTML用更多的存儲空間。)
編寫有效的HTML代碼,不然很難達到性能上的提高。
用相似這樣的工具 W3C HTML validator 來進行測試。
HTML代碼有效性是重要的質量衡量標準,並可確保HTML代碼能夠正確使用。
<!-- 不推薦 --> <title>Test</title> <article>This is only a test.
<!-- 推薦 --> <!DOCTYPE html> <meta charset="utf-8"> <title>Test</title> <article>This is only a test.</article>
使用元素 (有時候錯稱其爲「標籤」) 要知道爲何去使用它們和是否正確。 例如,用heading元素構造標題, p
元素構造段落, a
元素構造錨點等。
根據HTML各個元素的用途而去使用是很重要的,它涉及到文檔的可訪問性、重用和代碼效率等問題。
<!-- 不推薦 --> <div onclick="goToRecommendations();">All recommendations</div>
<!-- 推薦 --> <a href="recommendations/">All recommendations</a>
對於多媒體,如圖像,視頻,經過 canvas
讀取的動畫元素,確保提供備選方案。 對於圖像使用有意義的備選文案( alt
) 對於視頻和音頻使用有效的副本和文案說明。
提供備選內容是很重要的,緣由:給盲人用戶以一些提示性的文字,用 @alt
告訴他這圖像是關於什麼的,給可能沒理解視頻或音頻的內容的用戶以提示。
(圖像的 alt
屬性會產生冗餘,若是使用圖像只是爲了避免能當即用CSS而裝飾的 ,就不須要用備選文案了,能夠寫 alt=""
。)
<!-- 不推薦 --> <img src="spreadsheet.png">
<!-- 推薦 --> <img src="spreadsheet.png" alt="電子表格截圖">
嚴格保持結構 (標記),表現 (樣式),和行爲 (腳本)分離, 並儘可能讓這三者之間的交互保持最低限度。
確保文檔和模板只包含HTML結構, 把全部表現都放到樣式表裏,把全部行爲都放到腳本里。
此外,儘可能使腳本和樣式表在文檔與模板中有最小接觸面積,即減小外鏈。
將表現和行爲分開維護是很重要滴,由於更改HTML文檔結構和模板會比更新樣式表和腳本更花費成本。
<!-- 不推薦 --> <!DOCTYPE html> <title>HTML sucks</title> <link rel="stylesheet" href="base.css" media="screen"> <link rel="stylesheet" href="grid.css" media="screen"> <link rel="stylesheet" href="print.css" media="print"> <h1 style="font-size: 1em;">HTML sucks</h1> <p>I’ve read about this on a few sites but now I’m sure: <u>HTML is stupid!!1</u> <center>I can’t believe there’s no way to control the styling of my website without doing everything all over again!</center>
<!-- 推薦 --> <!DOCTYPE html> <title>My first CSS-only redesign</title> <link rel="stylesheet" href="default.css"> <h1>My first CSS-only redesign</h1> <p>I’ve read about this on a few sites but today I’m actually doing it: separating concerns and avoiding anything in the HTML of my website that is presentational. <p>It’s awesome!
不須要使用相似 —
、 ”
和 ☺
等的實體引用, 假定團隊之間所用的文件和編輯器是同一編碼(UTF-8)。
在HTML文檔中具備特殊含義的字符(例如 <
和 &
)爲例外, 噢對了,還有 「不可見」 字符 (例如no-break空格)。
<!-- 不推薦 --> 歐元貨幣符號是 “&eur;”。
<!-- 推薦 --> 歐元貨幣符號是 「€」。
type
屬性
在樣式表(除非不用 CSS)和腳本(除非不用 JavaScript)的標籤中 不寫 type
屬性。
HTML5默認 type
爲 text/css
和 text/javascript
類型,因此不必指定。即使是老瀏覽器也是支持的。
<!-- 不推薦 --> <link rel="stylesheet" href="//www.google.com/css/maia.css" type="text/css">
<!-- 推薦 --> <link rel="stylesheet" href="//www.google.com/css/maia.css">
<!-- 不推薦 --> <script src="//www.google.com/js/gweb/analytics/autotrack.js" type="text/javascript"></script>
<!-- 推薦 --> <script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>
獨立元素的樣式(as CSS allows elements to assume a different role per display
property), 將塊元素、列表元素或表格元素都放在新行。
另外,須要縮進塊元素、列表元素或表格元素的子元素。
(若是出現了列表項左右空文本節點問題,能夠試着將全部的 li
元素都放在一行。 A linter is encouraged to throw a warning instead of an error.)
<blockquote> <p><em>Space</em>, the final frontier.</p> </blockquote>
<ul> <li>Moe <li>Larry <li>Curly </ul>
<table> <thead> <tr> <th scope="col">Income <th scope="col">Taxes <tbody> <tr> <td>$ 5.00 <td>$ 4.50 </table>
使用有效的CSS代碼,除非是處理CSS校驗器程序錯誤或者須要專有語法。
用相似W3C CSS validator 這樣的工具來進行有效性的測試。
使用有效的CSS是重要的質量衡量標準,若是發現有的CSS代碼沒有任何效果的能夠刪除,確保CSS用法適當。
應該從ID和class的名字上就能看出這元素是幹嗎用的,而不是表象或模糊不清的命名。
應該優先慮以這元素具體目來進行命名,這樣他就最容易理解,減小更新。
通用名稱能夠加在兄弟元素都不特殊或沒有個別意義的元素上,能夠起名相似「helpers」這樣的泛。
使用功能性或通用的名字會減小沒必要要的文檔或模板修改。
/* 不推薦: 無心義 不易理解 */ #yee-1901 {} /* 不推薦: 表達不具體 */ .button-green {} .clear {}
/* 推薦: 明確詳細 */ #gallery {} #login {} .video {} /* 推薦: 通用 */ .aux {} .alt {}
簡要傳達ID或class是關於什麼的。
經過這種方式,似的代碼易懂且高效。
/* 不推薦 */ #navigation {} .atr {}
/* 推薦 */ #nav {} .author {}
非必要的狀況下不要使用元素標籤名和ID或class進行組合。
出於性能上的考慮避免使用父輩節點作選擇器 performance reasons.
/* 不推薦 */ ul#example {} div.error {}
/* 推薦 */ #example {} .error {}
CSS不少屬性都支持縮寫shorthand (例如 font
) 儘可能使用縮寫,甚至只設置一個值。
使用縮寫能夠提升代碼的效率和方便理解。
/* 不推薦 */ border-top-style: none; font-family: palatino, georgia, serif; font-size: 100%; line-height: 1.6; padding-bottom: 2em; padding-left: 1em; padding-right: 1em; padding-top: 0;
/* 推薦 */ border-top: 0; font: 100%/1.6 palatino, georgia, serif; padding: 0 1em 2em;
大型項目中最好在ID或class名字前加上這種標識性前綴(命名空間),使用短破折號連接。
使用命名空間能夠防止命名衝突,方便維護,好比在搜索和替換操做上。
.adw-help {} /* AdWords */ #maia-note {} /* Maia */
都按字母順序聲明,很容易記住和維護。
忽略瀏覽器的特定前綴排序,但多瀏覽器特定的某個CSS屬性前綴應相對保持排序(例如-moz前綴在-webkit前面)。
background: fuchsia; border: 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; color: black; text-align: center; text-indent: 2em;
縮進全部代碼塊的內容,它可以提升層次結構的清晰度。
@media screen, projection { html { background: #fff; color: #444; } }
考慮到一致性和拓展性,請在每一個聲明尾部都加上分號。
/* 不推薦 */ .test { display: block; height: 100px }
/* 推薦 */ .test { display: block; height: 100px; }
出於一致性的緣由,在屬性名和值之間加一個空格(可不是屬性名和冒號之間噢)。
/* 不推薦 */ h3 { font-weight:bold; }
/* 推薦 */ h3 { font-weight: bold; }
堅持一致原則
若是你要編輯代碼,先花幾分鐘看看它的代碼風格,若是它這麼作,那你也應該這麼作。
風格統一了,就有了一個共同思惟的環境,參與者就能夠專一的看你要說什麼,而不是先想你是在說哪星球的語言。 雖然咱們在這裏提出統同樣式規則,但就只是想讓你們都知曉並借鑑而對本身的風格進行修正。 固然,保持本身獨有的風格也是很重要的。balabala……