W3C中文教程
全球最大最新的中文 Web 技术教程
HTML CSS SQL PHP COLORS MYSQL BOOTSTRAP
 

HTML5 代码规范



HTML 编码约定

Web开发者常常不确定在 HTML 中使用的代码样式和语法。

在 2000 年至 2010 年之间,许多 web 开发者从 HTML 转换为 XHTML。

通过 XHTML,开发者不得不编写有效的“格式良好的”代码。

HTML5 在代码验证时会更宽松一点。

通过 HTML5,您必须创建属于自己的最佳实践、样式指南和代码约定


使用正确的文档类型

请始终在文档的首行声明文档类型:

<!DOCTYPE html>

如果您一贯坚持小写标签,那么可以使用:

<!doctype html>

使用小写元素名

HTML5 允许在元素名中使用混合大小写字母。

我们推荐使用小写元素名:

  • 混合大小写名称并不好
  • 发者习惯使用小写名(比如在 XHTML 中)
  • 小写更起来更纯净
  • 小写更易书写

不太好:

<SECTION>
  <p>This is a paragraph.</p>
</SECTION>

很糟糕:

<Section>
  <p>This is a paragraph.</p>
</SECTION>

推荐:

<section>
  <p>This is a paragraph.</p>
</section>

关闭所有 HTML 元素

在 HTML5 中,您不必关闭所有元素(例如 <p> 元素)。

我们建议关闭所有 HTML 元素:

不推荐:

<section>
  <p>This is a paragraph.
  <p>This is a paragraph.
</section>

推荐:

<section>
  <p>This is a paragraph.</p>
  <p>This is a paragraph.</p>
</section>

关闭空的 HTML 元素

在 HTML5 中,关闭空元素是可选的。

我们可以这么写:

<meta charset="utf-8">

也可以这么写:

<meta charset="utf-8" />

在 XHTML 和 XML 中斜线 (/) 是必须的。

如果你期望 XML 软件使用你的页面,使用这种风格是非常好的。


使用小写属性名

HTML5 属性名允许使用大写和小写字母。

我们推荐使用小写字母属性名:

  • 同时使用大小写是非常不好的习惯。
  • 开发人员通常使用小写 (类似 XHTML)。
  • 小写风格看起来更加清爽。
  • 小写字母容易编写。

不推荐:

<div CLASS="menu">

推荐:

<div class="menu">

属性值

HTML5 属性值可以不用引号。

属性值我们推荐使用引号:

  • 如果属性值含有空格需要使用引号。
  • 混合风格不推荐的,建议统一风格。
  • 属性值使用引号易于阅读。

这个属性值无效,因为值中包含空格:

<table class=table striped>

这样是有效的:

<table class="table striped">

图片属性

图片通常使用 alt 属性。 在图片不能显示时,它能替代图片显示。

<img src="html5.gif" alt="HTML5" style="width:128px;height:128px">

定义好图片的尺寸,在加载时可以预留指定空间,减少闪烁。

<img src="html5.gif" alt="HTML5" style="width:128px;height:128px">

空格和等号

等号两边的空格是合法的:

<link rel = "stylesheet" href = "styles.css">

但是精简空格更易阅读,能更好地组合实体:

<link rel="stylesheet" href="styles.css">

避免一行代码过长

当使用 HTML 编辑器时,通过左右滚动来阅读 HTML 代码很不方便。

请尽量避免代码行超过 80 个字符。


空行和缩进

不要无缘无故添加空行。

为每个逻辑功能块添加空行,这样更易于阅读。

缩进使用两个空格,不建议使用 TAB。

请勿使用没有必要的空行和缩进。没有必要在短的和相关项目之间使用空行,也没有必要缩进每个元素:

不必要的空行和缩进:

<body>

  <h1>Famous Cities</h1>

  <h2>Tokyo</h2>

  <p>
    Tokyo is the capital of Japan, the center of the Greater Tokyo Area,
    and the most populous metropolitan area in the world.
    It is the seat of the Japanese government and the Imperial Palace,
    and the home of the Japanese Imperial Family.
  </p>

</body>

推荐:

<body>

<h1>Famous Cities</h1>

<h2>Tokyo</h2>
<p>Tokyo is the capital of Japan, the center of the Greater Tokyo Area,
and the most populous metropolitan area in the world.
It is the seat of the Japanese government and the Imperial Palace,
and the home of the Japanese Imperial Family.</p>

</body>

表格实例:

<table>
  <tr>
    <th>Name</th>
    <th>Description</th>
  </tr>
  <tr>
    <td>A</td>
    <td>Description of A</td>
  </tr>
  <tr>
    <td>B</td>
    <td>Description of B</td>
  </tr>
</table>

列表实例:

<ol>
  <li>London</li>
  <li>Paris</li>
  <li>Tokyo</li>
</ol>

省略 <html> 和 <body>?

在标准 HTML5 中, <html> 和 <body> 标签是可以省略的。

以下代码作为 HTML5 进行验证:

Example

<!DOCTYPE html>
<head>
  <title>Page Title</title>
</head>

<h1>This is a heading</h1>
<p>This is a paragraph.</p>
尝试一下 »

我们不推荐省略 <html> 和 <body> 标签。

<html> 元素是文档的根元素,用于描述页面的语言:

<!DOCTYPE html>
<html lang="en-US">

对于可访问应用程序(屏幕阅读器)和搜索引擎,声明语言很重要。

省略 <html> 或 <body> 在 DOM 和 XML 软件中会崩溃。

省略 <body> 在旧版浏览器 (IE9) 中会发生错误。


省略 <head>?

在标准 HTML5 中, <head> 标签是可以省略的。

默认情况下,浏览器会将 <body> 之前的内容添加到一个默认的 <head> 元素上。

通过省略 <head> 标签,您能够降低 HTML 的复杂性:

Example

<!DOCTYPE html>
<html>
<title>Page Title</title>

<body>
  <h1>This is a heading</h1>
  <p>This is a paragraph.</p>
</body>

</html>
尝试一下 »
Note 现在省略 head 标签还不推荐使用。

元数据

HTML5 中 <title> 元素是必须的,标题名描述了页面的主题(尽可能的有意义,这样也便于SEO):

<title>HTML5 Syntax and Coding Style</title>

标题和语言可以让搜索引擎很快了解你页面的主题:

<!DOCTYPE html>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title>HTML5 Syntax and Coding Style</title>
</head>

HTML 注释

短注释应该在单行中书写,并在 <!-- 之后增加一个空格,在 --> 之前增加一个空格:

<!-- This is a comment -->

比较长的评论可以在 <!-- 和 --> 中分行写:

<!--
  This is a long comment example. This is a long comment example. This is a long comment example.
  This is a long comment example. This is a long comment example. This is a long comment example.
-->

长评论第一个字符缩进两个空格,更易于阅读。


样式表

样式表使用简洁的语法格式( type 属性不是必须的):

<link rel="stylesheet" href="styles.css">

短的规则可以写成一行,像这样:

p.into {font-family: Verdana; font-size: 16em;}

长的规则可以写成多行:

body {
  background-color: lightgrey;
  font-family: "Arial Black", Helvetica, sans-serif;
  font-size: 16em;
  color: black;
}
  • 将左花括号与选择器放在同一行
  • 左花括号与选择器间添加一个空格
  • 使用两个空格来缩进
  • 冒号与属性值之间添加已空格
  • 逗号和符号之后使用一个空格
  • 每个属性与值结尾都要使用分号
  • 只有属性值包含空格时才使用引号
  • 右花括号放在新的一行
  • 每行最多 80 个字符
Note 在逗号和冒号后添加空格是常用的一个规则。

在 HTML 中载入 JavaScript

使用简洁的语法来载入外部的脚本文件( type 属性不是必须的):

<script src="myscript.js">

使用 JavaScript 访问 HTML 元素

一个糟糕的 HTML 格式可能会导致 JavaScript 执行错误。

以下两个 JavaScript 语句会输出不同结果:

Example

var obj = getElementById("Demo")

var obj = getElementById("demo")
尝试一下 »

HTML 中 JavaScript 尽量使用相同的命名规则。

访问 JavaScript 代码规范


使用小写文件名

大多数 Web 服务器(Apache、Unix)对文件名的大小写敏感:

london.jpg 不能通过 London.jpg 访问

其他 Web 服务器 (Microsoft, IIS) 对大小写不敏感:

london.jpg 可以通过 London.jpg 或 london.jpg 访问。

如果使用混合大小写,那么您必须保持高度的一致性。

如果您从对大小写不敏感的服务器转到一台对大小写敏感的服务器上,这些小错误将破坏您的网站。

为了避免这些问题,请始终使用小写文件名(如果可以的话)。


文件扩展名

HTML 文件后缀可以是 .html (或 .htm)。

CSS 文件后缀是 .css

avaScript 文件后缀是 .js


.htm 和 .html 的区别

htm 和 .html 的扩展名文件本质上是没有区别的。浏览器和 Web 服务器都会把它们当作 HTML 文件来处理。

区别在于:

.htm 应用在早期 DOS 系统,系统现在或者只能有三个字符。

在 Unix 系统中后缀没有特别限制,一般用 .html。


技术上区别

如果一个 URL 没有指定文件名 (如 http://www.w3schools.wang/css/), 服务器会返回默认的文件名。通常默认文件名为 index.html,index.htm,default.html,和 default.htm。

如果服务器只配置了 "index.html" 作为默认文件,你必须将文件命名为 "index.html",而不是 "index.htm"。

但是,通常服务器可以设置多个默认文件,你可以根据需要设置默认文件名。

不管怎样,HTML 完整的后缀是 ".html"。