此为前端开发团队遵循和约定的HTML 编码规范,意在提高代码的规范性和可维护性。
文档中使用的关键字「MUST」,「MUST NOT」,「REQUIRED」,「SHALL」,「SHALL NOT」,「SHOULD」,「SHOULD NOT」,「RECOMMENDED」,「MAY」和「OPTIONAL」在RFC2119中有说明。
还未定稿,对规范中提及的点有不赞同的欢迎提出issues(请添加 HTML
标签)讨论。
-
必须「MUST」采用 4 个空格为一次缩进。
-
新起一行的标签必须「MUST」要和父标签保持一次缩进。
// bad <!DOCTYPE html> <html> <head> <title>abc</title> </head> <body> <ul> <li>Dog</li> <li>Cat</li> </ul> </body> // good <!DOCTYPE html> <html> <head> <title>abc</title> </head> <body> <ul> <li>Dog</li> <li>Cat</li> </ul> </body> </html>
-
标签属性值必须「MUST」使用双引号。
// bad <a class='maia-button maia-button-secondary'>Sign in</a> // good <a class="maia-button maia-button-secondary">Sign in</a>
-
文档类型声明必须「MUST」使用 HTML5。
// good <!DOCTYPE html>
-
HTML 的标签使用应该「SHOULD」遵循标签的语义。
// bad <div onclick="goToRecommendations();">All recommendations</div> // good <a href="recommendations/">All recommendations</a>
-
<img>
标签应该「SHOULD」添加alt
属性来增强可访问性。// bad <img src="spreadsheet.png"> // good <img src="spreadsheet.png" alt="Spreadsheet screenshot.">
-
应该「SHOULD」将 HTML 中的内容(html)、表现(css)和行为(javascript)分离,HTML 标签只应该「SHOULD」用于定义内容。
// bad <!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> // good <!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!
-
应该「SHOULD」省略样式标签(link/style)和脚本标签(script)中的type属性。
// bad <link rel="stylesheet" href="//www.google.com/css/maia.css" type="text/css"> <script src="//www.google.com/js/gweb/analytics/autotrack.js" type="text/javascript"></script> <style type="text/css"> .author{} </style> // good <link rel="stylesheet" href="//www.google.com/css/maia.css"> <script src="//www.google.com/js/gweb/analytics/autotrack.js"></script> <style> .author{} </style>
-
URL 的写法应该「SHOULD」省掉协议,这样能更好地适应 http 和 https。
//good <script src="//fex.baidu.com/example.js"></script>
-
应该「SHOULD」省略自闭合标签结尾的斜杠。
// bad <img src="spreadsheet.png" alt="Spreadsheet screenshot." /> // good <img src="spreadsheet.png" alt="Spreadsheet screenshot.">
-
应该「SHOULD」启用 IE Edge 模式。
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
-
HTML 文件编码以及
meta
标签编码应该「SHOULD」统一为UTF-8
,文件内容编码为 UTF-8(无 BOM)。<head> <meta charset="UTF-8"> </head>
-
不应该「SHOULD NOT」使用实体,对于 UTF-8 的页面,使用实体意义不大,反而降低了可维护性。
// bad Euro is “&eur;”. // good Euro is “€”.
-
HTML 文件编码声明必须「MUST」在
<title>
之前,避免编码检测出错导致的问题。// bad <title>中文</title> <meta charset="UTF=8"> // good <meta charset="UTF=8"> <title>中文</title>
-
布尔类型的属性不应该「SHOULD NOT」添加属性值。
// bad <input type="text" disabled="true"> <input type="checkbox" value="1" checked="true"> <select> <option value="1" selected="true">1</option> </select> // good <input type="text" disabled> <input type="checkbox" value="1" checked> <select> <option value="1" selected>1</option> </select>