Skip to content

规范

HTML 规范能够使 HTML 代码风格保持一致,使得 HTML 更容易理解和维护。

语法

  • 不要连续使用多个空行
  • 为每个逻辑功能块添加空行,这样更易于阅读
  • 缩进使用 2 个空格(一个 tab)
  • 嵌套的节点应该缩进
  • 在属性上,使用双引号,不要使用单引号
  • 属性名全小写,用中划线做分隔符
  • 不要在自动闭合标签结尾处使用斜线(HTML5 规范 指出他们是可选的)
  • 不要忽略可选的关闭标签,例:</li></body>
html
<!doctype html>
<html>
  <head>
    <title>Page title</title>
  </head>
  <body>
    <img src="images/company_logo.png" alt="Company" />

    <h1 class="hello-world">Hello, world!</h1>
  </body>
</html>

HTML5 doctype

在页面开头使用这个简单地 doctype 来启用标准模式,使其在每个浏览器中尽可能一致的展现;

虽然 doctype 不区分大小写,但是按照惯例,doctype 大写 (关于 HTML 属性,大写还是小写)。

html
<!doctype html>

lang 属性

根据 HTML5 规范:

应在 HTML 标签上加上 lang 属性。这会给语音工具和翻译工具帮助,告诉它们应当怎么去发音和翻译。

html
<!doctype html>
<html lang="en-us">
  ...
</html>

语义化标签

HTML5 中新增很多语义化标签,所以优先使用语义化标签,避免一个页面都是 div 或者 p 标 签。

引号

使用双引号(" ") 而不是单引号(' ') 。

字符编码

通过声明一个明确的字符编码,让浏览器轻松、快速的确定适合网页内容的渲染方式,通常指定为'UTF-8'。

html
<!doctype html>
<html>
  <head>
    <meta charset="UTF-8" />
  </head>
  ...
</html>

减少标签数量

在编写 HTML 代码时,需要尽量避免多余的父节点;

很多时候,需要通过迭代和重构来使 HTML 变得更少。

html
<!-- Not well -->
<span class="avatar">
  <img src="..." />
</span>

<!-- Better -->
<img class="avatar" src="..." />

语义化标签

HTML5 中新增很多语义化标签,所以优先使用语义化标签,避免一个页面都是 div 或者 p 标签,但是不应该以浪费实用性作为代价;

任何时候都要用尽量小的复杂度和尽量少的标签来解决问题。

html
<header></header>
<footer></footer>

代码注释

单行注释内容前后各一个空格字符,注释位于要注释代码的上面。

html
<!-- 注释内容 -->
<p>这是一个段落。</p>

多行注释第一个字符使用空格缩进,更易于阅读。

html
<!--
    这是一段注释,
    注释不会在浏览器中显示。
-->
<p>这是一个段落。</p>

模块注释用于描述模块的名称以及模块开始与结束的位置,模块与模块之间空行。

html
<!-- S 标题注释开始 -->
<h1>这是一个标题。</h1>
<!-- E 标题注释结束 -->

<!-- S 段落注释开始 -->
<p>这是一个段落。</p>
<!-- E 段落注释结束 -->

使用注释标签来隐藏浏览器不支持的脚本也是一个好习惯(这样就不会把脚本显示为纯文本):

html
<script type="text/javascript">
  <!--
  function displayMsg() {
    alert('Hello World!');
  }
  //-->
</script>

注释行结尾处的两条斜杠 (//) 是 JavaScript 注释符号,这可以避免 JavaScript 执行 --> 标签。

移动端优化

在移动浏览器中使用 viewport 标签控制布局,优化页面显示效果。

html
<meta name="viewport" content="width=device-width,initial-scale=1" />