请通过邮件订阅网站,随时获取最新动态!

# HTML 规范

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

# 文档类型

<!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前。推荐使用 HTML5 的文档声明:

<!DOCTYPE html>

# 页面语言

推荐使用属性值 cmn-Hans-CN(简体, 中国大陆),但是考虑浏览器和操作系统的兼容性,目前仍然使用 zh-CN 属性值。

<html lang="zh-CN">

# 字符编码

HTML5 中的默认字符集为 UTF-8,请使用 “UTF-8” 编码的标准写法:

<meta charset="UTF-8">

由于历史原因,有些业务可能会使用 GBK 编码。

<meta charset="GBK">

# 标签元素

HTML 元素共有以下 5 种:

  • 空元素areabasebrcolcommandembedhrimginputkeygenlinkmetaparamsourcetrackwbr
  • 原始文本元素scriptstyle
  • RCDATA 元素textareatitle
  • 外来元素:来自 MathML 命名空间和 SVG 命名空间的元素
  • 常规元素:其他 HTML 允许的元素都称为常规元素

HTML 标签的使用应该遵循标签的语义,且要符合标签嵌套规则。

为了能让浏览器更好的解析代码以及让代码具有更好的可读性,HTML 元素标签的闭合应遵循以下原则:

  • 空元素只有一个开始标签,且不能为空元素设置结束标签
  • 某些元素的开始和结束标签是可以省略的,建议每个元素都要显式添加标签
  • 外来元素可以有一个开始标签和配对的结束标签,或者只有一个自闭合的开始标签
  • 原始文本元素、RCDATA 元素以及常规元素都有一个开始标签来表示开始,一个结束标签来表示结束

# 代码注释

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

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

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

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

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

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

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

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

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

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

# 命名规范

  • id 必须保证页面唯一性,同时应避免使用相同的 name
  • id 必须使用单词全字母小写,多个单词以下划线 _ 分割
  • class 必须代表相应模块的功能或内容,不得以表现形式命名
  • class 必须使用单词全字母小写,多个单词以中划线 - 分割
  • 自定义属性必须使用 data- 前缀,属性名不应该包含任何大写字母

# 类型属性

使用简洁的语法来载入外部样式表和脚本文件,无须指明 type 属性。

<link rel="stylesheet" href="../css/bootstrap.min.css" />
<script src="../js/jquery.slim.min.js"></script>

# 元素属性

属性名必须使用小写字母,属性值必须用双引号语法。

<input type="text" />

布尔类型的属性,建议不添加属性值。

<input type="radio" checked />

# 空行和缩进

  • 不要连续使用多个空行
  • 为每个逻辑功能块添加空行,这样更易于阅读
  • 缩进使用 4 个空格,不允许使用 tab 制表符
  • 比较短的代码之间不要使用不必要的空行和缩进

# IE 兼容模式

优先使用最新版本的 IE 和 Chrome 内核。

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

# 移动端优化

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

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