HTML编写规范

115 阅读2分钟

语法

  • 标签语法无错误,需要符合语义化,便于维护
  • 标签必须合法且闭合、嵌套正确,标签名需小写,即便是 doctype 标签
  • 用两个空格来代替制表符(tab),具体两个或四个可以跟随开发而定,但是要统一

规范

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

    <!-- 字符编码 -->

    <meta charset="UTF-8">

    <!-- IE=edge告诉IE使用最新的引擎渲染网页,chrome=1则可以激活Chrome Frame -->

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

    <!-- 移动端适配 -->

    <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0,maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />

    <!-- UC强制全屏 -->

    <meta name="full-screen" content="yes">

    <!-- QQ强制全屏 -->

    <meta name="x5-fullscreen" content="true" />

    <!-- UC应用模式 -->

    <meta name="browsermode" content="application" />

    <!-- x5内核,app:网页应用模式(定制工具栏,全屏显示) -->

    <meta name="x5-page-mode" content="app" />

    <!-- 忽略页面中的数字识别为电话,忽略email识别 -->
    
    <meta name="format-detection" content="telephone=no, email=no" />

    <!-- 搜索引擎抓取 -->

    <meta name="robots" content="all" />

    <!-- 版权归属 -->

    <meta name="copyright" content="Tencent" />

    <!-- 页面描述(内容可替换:不超过150个字符,描述内容要和页面内容相关) -->

    <meta name="description" content="竞技**" />

    <!-- 页面关键字(内容可替换:Keywords为产品名、专题名、专题相关名词,之间用英文半角逗号隔开)-->

    <meta name="keywords" content="***" />

    <!-- 页面标题(内容可替换:页面名称、产品中文全称、官方网站、腾讯游戏、产品slogan,28个汉字以内)-->

    <title>***</title>

  </head>
  • 链接全部采用https协议,不要协议自适应

<!-- Bad -->

2. <style>

3. <!-- CSS背景图片 -->

4. .bg{

5. background: url(//game.gtimg.cn/images/cf/cp/a20161021sqjs/hd.jpg) no-repeat;

6. }

7. </style>

8. <!-- 链接URL -->

9. <a href="//cf.qq.com/main.shtml">进入官网</a>

10. <!-- 图片SRC -->

11. <img src="//game.gtimg.cn/images/cf/web201610/logo.png">

12. <!-- JS链接 -->

13. <script src="//ossweb-img.qq.com/images/js/title.js"></script>


<!-- Good -->

15. <style>

16. <!-- CSS背景图片 -->

17. .bg{

18. background: url(https://game.gtimg.cn/images/cf/cp/a20161021sqjs/hd.jpg) no-repeat;

19. }

20. </style>

21. <!-- 链接URL -->

22. <a href="https://cf.qq.com/main.shtml">进入官网</a>

23. <!-- 图片SRC -->

24. <img src="https://game.gtimg.cn/images/cf/web201610/logo.png">

25. <!-- JS链接 -->

26. <script src="https://ossweb-img.qq.com/images/js/title.js"></script>
  • HTML5 doctype为每个 HTML 页面的第一行添加 standards mode(标准模式) 声明,这样能够确保在每个浏览器中拥有一致的展现。
<!doctype html>

<html>

    <head>

    </head>

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

更多关于 lang 属性的知识可以从此规范中了解。Sitepoint 站点上给出了一份语言代码表。


<html lang="zh-CN">

    <!-- ... -->

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

    class

    id, name

    data-*

    src, for, type, href, value

    title, alt

    role, aria-*

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


<a class="..." id="..." data-toggle="modal" href="#">Example link</a>
<input class="form-control" type="text">
<img src="..." alt="...">
  • 链接

    给a标签加上title属性

    a标签的href属性必须写上链接地址,暂无的加上javascript:;

    非本专题的页面间跳转,采用打开新窗口模式:target="_blank"

  • 布尔(boolean)型属性

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

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

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

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

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

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


<input type="text" disabled>
<input type="checkbox" value="1" checked>
<select>
   <option value="1" selected>1</option>
</select>
  • 编写 HTML 代码时,尽量避免多余的父元素,避免DOM嵌套过深。

<!-- Bad -->

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

<!-- Good -->

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

减少标签的数量