HTML最佳实践

  • Post author:
  • Post category:其他




HTML 代码规范



DOCTYPE 声明

HTML 文件必须加上 DOCTYPE 声明,并统一使用 HTML5 的文档声明:

<!DOCTYPE html>



页面语言 LANG

历史原因标准一直在变 zh-CN -> zh-cmn-Hans -> cmn-Hans-CN

但是考虑浏览器和操作系统的兼容性,目前仍然使用 zh-CN 属性值

<html lang="zh-CN"></html>



CHARSET

一般情况下统一使用 “UTF-8” 编码

<meta charset="UTF-8" />

有些老代码可能会使用 “GBK” 编码

<meta charset="GBK" />



元素及标签闭合

  • 所有具有开始标签和结束标签的元素都要写上起止标签,某些允许省略开始标签或和束标签的元素亦都要写上。
  • 单闭合标签都加 “/” 字符 (格式化工具会帮忙添加)
<div>
  <h1>我是h1标题</h1>
  <p>我是一段文字,我有始有终,浏览器能正确解析</p>
</div>
<img />
<br />



书写风格



HTML 代码大小写

HTML 标签名、类名、标签属性和大部分属性值统一用小写

<div class="demo"></div>

HTML 文本、CDATA、JavaScript、meta 标签某些属性等内容可大小写混合

<!-- 优先使用 IE 最新版本和 Chrome Frame -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

<!-- HTML文本内容 -->
<h1>I AM WHAT I AM</h1>

<!-- JavaScript 内容 -->
<script type="text/javascript">
  var demoName = 'demoName';
  ...
</script>

<!-- CDATA 内容 -->
<script type="text/javascript">
  <![CDATA[
  ...
  ]]>
</script>



类型属性

需要为 CSS、JS 指定类型属性

<link rel="stylesheet" href="" />
<script type="text/javascript" src=""></script>



元素属性

  • 元素属性值使用双引号语法
  • 元素属性值,如 checked 可简写
<div>
  <input type="text" />
</div>
<input type="radio" name="name" checked />



特殊字符

在 HTML 中不能使用小于号 “<” 和大于号 “>”特殊字符,浏览器会将它们作为标签解析,若要正确显示,在 HTML 源代码中使用字符实体

<p><a href="#">more&gt;&gt;</a></p>
<p><a href="#">&copy;xxxx公司</a></p>



代码缩进

统一使用两个空格进行代码缩进

<div>
  <a href="#"></a>
</div>



语义化标签

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

<header></header>
<main>
  <nav></nav>
  <section></section>
</main>
<footer></footer>



Img 标签加入 alt 信息

Img 标签 alt 信息对 seo 友好也可以在显示不出图片时有一定的提示

<img src="./logo.png" alt="企业图标" />



纯数字输入框

使用 type=“tel” 而不是 type=“number”

<input type="tel" />



代码嵌套

元素嵌套规范,每个块状元素独立一行,内联元素可选

<div>
  <h1></h1>
  <p></p>
</div>
<p><span></span><span></span></p>



注释



单行注释

一般用于简单的描述,如某些状态描述、属性描述等

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

<!-- Comment Text -->
<div></div>



模块注释

一般用于描述模块的名称以及模块开始与结束的位置

注释内容前后各一个空格字符,
表示模块开始,
表示模块结束,模块与模块之间相隔一行

<!-- S Comment Text A -->
<div class="mod_a">...</div>
<!-- E Comment Text A -->

<!-- S Comment Text B -->
<div class="mod_b">...</div>
<!-- E Comment Text B -->



嵌套模块注释

当模块注释内再出现模块注释的时候,为了突出主要模块,嵌套模块不再使用,改用

<!-- /Comment Text -->

注释写在模块结尾标签底部,单独一行。

<!-- S Comment Text A -->
<div class="mod_a">
  <div class="mod_b">...</div>
  <!-- /mod_b -->

  <div class="mod_c">...</div>
  <!-- /mod_c -->
</div>
<!-- E Comment Text A -->



HTML 模版

移动端和 PC 端主要是 viewport 和 meta 标签的区别



移动端

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no"
    />
    <meta name="format-detection" content="telephone=no" />
    <title>移动端HTML模版</title>

    <!-- S DNS预解析 -->
    <link rel="dns-prefetch" href="" />
    <!-- E DNS预解析 -->

    <!-- S 线上样式页面片,开发请直接取消注释引用 -->
    <!-- #include virtual="" -->
    <!-- E 线上样式页面片 -->

    <!-- S 本地调试,根据开发模式选择调试方式,请开发删除 -->
    <link rel="stylesheet" href="css/index.css" />
    <!-- /本地调试方式 -->

    <link rel="stylesheet" href="http://srcPath/index.css" />
    <!-- /开发机调试方式 -->
    <!-- E 本地调试 -->
  </head>
  <body></body>
</html>



PC 端

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <!-- 如果是响应式页面也需要设置viewport -->
    <meta name="keywords" content="your keywords" />
    <meta name="description" content="your description" />
    <meta name="author" content="author,email address" />
    <meta name="robots" content="index,follow" />
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
    <meta name="renderer" content="ie-stand" />
    <title>PC端HTML模版</title>

    <!-- S DNS预解析 -->
    <link rel="dns-prefetch" href="" />
    <!-- E DNS预解析 -->

    <!-- S 线上样式页面片,开发请直接取消注释引用 -->
    <!-- #include virtual="" -->
    <!-- E 线上样式页面片 -->

    <!-- S 本地调试,根据开发模式选择调试方式,请开发删除 -->
    <link rel="stylesheet" href="css/index.css" />
    <!-- /本地调试方式 -->

    <link rel="stylesheet" href="http://srcPath/index.css" />
    <!-- /开发机调试方式 -->
    <!-- E 本地调试 -->
  </head>
  <body></body>
</html>



版权声明:本文为xuewenjie0217原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。