基本规范
语义
使用符合语义的标签书写 HTML 文档, 选择恰当的元素表达所需的含义;
<!-- 不推荐 --> <div onclick="goToRecommendations();">All recommendations</div>
<!-- 推荐 --> <a href="recommendations/">All recommendations</a>
大小写
元素的标签和属性名必须小写, 属性值必须加双引号; 例如
<!-- 不推荐 --> <A HREF='/'>Home</A>
<!-- 推荐 --> <a href="/">Home</a>
缩进
- 使用四个空格来表示缩进,不要使用 tab 键;
- 在块状元素,列表,表格元素后面使用新行,并且对它的子元素进行缩进.
例如
空格
去除比不必要的空格; 例如
<!-- 不推荐 --> <p>test </p>
嵌套
- 元素嵌套遵循 (X)HTML Strict 嵌套规则, 推荐使用Firefox插件 HTML Validator 进行检查;
- 正确区分自闭合元素和非自闭合元素. 非法闭合包括:<br>..</br>、<script />、<iframe />, 非法闭合会导致页面嵌套错误问题;
<!-- 不推荐 --> <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>
引号
使用双引号来标识 html 的属性; 例如
<!-- 不推荐 --> <a class='maia-button maia-button-secondary'>Sign in</a>
<!-- 推荐 --> <a class="maia-button maia-button-secondary">Sign in</a>
自定义属性
通过给元素设置自定义属性来存放与 JavaScript 交互的数据, 属性名格式为 data-xx (例如:data-lazyload-url)
DOCTYPE
页面文档类型统一使用HTML5 DOCTYPE. 代码如下:
编码
声明方法遵循HTML5的规范.推荐使用 utf-8 编码.
注释
建议对超过10行的页面模块进行注释, 以降低开发人员的嵌套成本和后期的维护成本. 例如:
<div id="sample"> ... </div> <!-- #sample END -->
<div class="sample"> ... </div> <!-- .sample END -->
协议
如果链接和当前页面一致则忽略链接的协议部分,例如
<!-- 不推荐 --> <script src="http://www.taobao.com/fp.js"></script>
<!-- 推荐 --> <script src="//www.taobao.com/fp.js"></script>
/* 不推荐 */ .example { background: url(http://www.taobao.com/fp.css); }
/* 推荐 */ .example { background: url(//www.taobao.com/fp.css); }
TODO
- 使用 TODO 来标记待做事情,便于后期搜索.
- 在 TODO 后添加 (姓名或邮件) 来表示分类.
例如
<!-- TODO(yiminghe): remove duplicate tag --> <p><span>2</span></p>
焦点分离
- 将表现,行为和结构分离:不要在 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!