不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的。

语法

用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展现的方法。

嵌套元素应当缩进一次(即两个空格)。

对于属性的定义,确保全部使用双引号,绝不要使用单引号。

不要在自闭合(self-closing)元素的尾部添加斜线 --HTML5 规范中明确说明这是可选的。

<img src="data:images/company-logo.png" alt="Company">

不要省略可选的结束标签(closing tag)(例如,</li>或 </body>)。

HTML5 doctype

为每个 HTML 页面的第一行添加标准模式(standard mode)的声明,这样能够确保在每个浏览器中拥有一致的展现。

<!DOCTYPE html>

语言属性

根据 HTML5 规范:

强烈建议为 html 根元素指定 lang 属性,从而为文档设置正确的语言。这将有助于语音合成工具确定其所应该采用的发音,有助于翻译工具确定其翻译时所应遵守的规则等等。

更多关于 lang 属性的知识可以从 此规范 中了解。

<html lang="zh-CN">

这里列出了语言代码表

IE 兼容模式

IE 支持通过特定的 <meta> 标签来确定绘制当前页面所应该采用的 IE 版本。除非有强烈的特殊需求,否则最好是设置为edge mode,从而通知 IE 采用其所支持的最新的模式。

<meta http-equiv="X-UA-Compatible" content="IE=Edge">

字符编码

通过明确声明字符编码,能够确保浏览器快速并容易的判断页面内容的渲染方式。这样做的好处是,可以避免在 HTML 中使用字符实体标记(character entity),从而全部与文档编码一致(一般采用 UTF-8 编码)。

<meta charset="UTF-8">

引入 CSS 和 JavaScript 文件

根据 HTML5 规范,在引入 CSS 和 JavaScript 文件时一般不需要指定 type 属性,因为 text/css 和 text/javascript 分别是它们的默认值。

<link rel="stylesheet" href="code-guide.css">
<script src="code-guide.js"></script>

实用为王

尽量遵循 HTML 标准和语义,但是不要以牺牲实用性为代价。任何时候都要尽量使用最少的标签并保持最小的复杂度。

属性顺序

HTML 属性应当按照以下给出的顺序依次排列,确保代码的易读性。

  • class
  • idname
  • data-*
  • srcfortypehref
  • titlealt
  • aria-*role

class 用于标识高度可复用组件,因此应该排在首位。id 用于标识具体组件,应当谨慎使用(例如,页面内的书签),因此排在第二位。

<a class="..." id="..." data-modal="toggle" href="#">
<input class="form-control" type="text">

<img src="..." alt="...">

布尔(boolean)型属性

布尔型属性可以在声明时不赋值。XHTML 规范要求为其赋值,但是 HTML5 规范不需要。

更多信息请参考 WhatWG section on boolean attributes

元素的布尔型属性如果有值,就是 true,如果没有值,就是 false。

如果一定要为其赋值的话,请参考 WhatWG 规范:

如果属性存在,其值必须是空字符串或 [...] 属性的规范名称,并且不要再收尾添加空白符。

简单来说,就是不用赋值。

减少标签的数量

编写 HTML 代码时,尽量避免多余的父元素。很多时候,这需要迭代和重构来实现。请看下面的案例:

<span class="avatar">
<img src="...">
</span>

改为:<img class="avatar" src="...">

JavaScript 生成的标签

通过 JavaScript 生成的标签让内容变得不易查找、编辑,并且降低性能。能避免时尽量避免。

 

最新文章

  1. Startcom SSL证书申请 IIS设置 配置 攻略
  2. springMVC配置Json
  3. JQ添加标签
  4. Orchard Express Oracle v1.7.2 发布
  5. 【框架】RefreshListView下拉刷新
  6. 一步一步理解word2Vec
  7. xmind的第三天笔记
  8. mysql 5.5及以前版本的编码问题“Incorrect string value: &#39;\xE6\x9B\xB9\xE5\x86\xAC...&#39; for column &#39;realname&#39; at row 1”
  9. es6语法重构react代码
  10. 最长公共子序列(LCS问题)
  11. lua入门
  12. Spark + Mesos 注意事项
  13. How To Install Kernel 3.10 On Ubuntu, Linux Mint, Debian and Derivates
  14. oracle中导入导出数据备份数据库
  15. 菜鸟笔记:node.js+mysql中将JSON数据构建为树(递归制作树状菜单数据接口)
  16. SpringBoot启动原理及相关流程
  17. 工作流——activiti
  18. 大白书中无向图的点双联通分量(BCC)模板的分析与理解
  19. dynamo与cassandra区别
  20. 【转】Mac OS X 上修改主机名

热门文章

  1. 关于java中指针的概念
  2. UART协议总结
  3. 应对Gradle联网问题、长时间卡在resolve dependencies的思路
  4. Linux基础二(挂载、关机重启与系统等级)
  5. sql server获取当前月的天数
  6. centos 7 安装搜狗输入法
  7. php常用几种设计模式的应用场景
  8. tp3.2.3运用phpexcel将excel文件导入mysql数据库
  9. MySQL的IFNULL解决判空问题
  10. IDEA中在目录中如何快速指定到当前的类