回答

收藏

项目规范 - HTML篇

前端知识 前端知识 1087 人阅读 | 0 人回复 | 2024-08-31

本帖最后由 wangyang 于 2024-8-31 17:50 编辑

语法
  • 缩进使用soft tab(4个空格);
  • 嵌套的节点应该缩进;
  • 在属性上,使用双引号,不要使用单引号;
  • 属性名全小写,用中划线做分隔符;
  • 不要在自动闭合标签结尾处使用斜线(HTML5 规范 指出他们是可选的);
  • 不要忽略可选的关闭标签,例:</li> 和 </body>。
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <title>Page title</title>
  5.     </head>
  6.     <body>
  7.         <img src="images/company_logo.png" alt="Company">

  8.         <h1 class="hello-world">Hello, world!</h1>
  9.     </body>
  10. </html>
复制代码
HTML5 doctype
在页面开头使用这个简单地doctype来启用标准模式,使其在每个浏览器中尽可能一致的展现;
虽然doctype不区分大小写,但是按照惯例,doctype大写 (关于html属性,大写还是小写)。
  1. <!DOCTYPE html>
  2. <html>
  3.         ...
  4. </html>
复制代码
lang属性
根据HTML5规范:
应在html标签上加上lang属性。这会给语音工具和翻译工具帮助,告诉它们应当怎么去发音和翻译。
更多关于 lang 属性的说明在这里
在sitepoint上可以查到语言列表
但sitepoint只是给出了语言的大类,例如中文只给出了zh,但是没有区分香港,台湾,大陆。而微软给出了一份更加详细的语言列表,其中细分了zh-cn, zh-hk, zh-tw。
  1. <!DOCTYPE html>
  2. <html lang="en-us">
  3.     ...
  4. </html>
复制代码
字符编码
通过声明一个明确的字符编码,让浏览器轻松、快速的确定适合网页内容的渲染方式,通常指定为'UTF-8'。
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <meta charset="UTF-8">
  5.     </head>
  6.     ...
  7. </html>
复制代码
IE兼容模式
用 <meta> 标签可以指定页面应该用什么版本的IE来渲染;
如果你想要了解更多,请点击这里
不同doctype在不同浏览器下会触发不同的渲染模式(这篇文章总结的很到位)。
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <meta http-equiv="X-UA-Compatible" content="IE=Edge">
  5.     </head>
  6.     ...
  7. </html>
复制代码
引入CSS, JS
根据HTML5规范, 通常在引入CSS和JS时不需要指明 type,因为 text/css 和 text/javascript 分别是他们的默认值。
HTML5 规范链接
  1. <!-- External CSS -->
  2. <link rel="stylesheet" href="code_guide.css">

  3. <!-- In-document CSS -->
  4. <style>
  5.     ...
  6. </style>

  7. <!-- External JS -->
  8. <script src="code_guide.js"></script>

  9. <!-- In-document JS -->
  10. <script>
  11.     ...
  12. </script>
复制代码
属性顺序
属性应该按照特定的顺序出现以保证易读性;
  • class
  • id
  • name
  • data-*
  • src, for, type, href, value , max-length, max, min, pattern
  • placeholder, title, alt
  • aria-*, role
  • required, readonly, disabled
class是为高可复用组件设计的,所以应处在第一位;
id更加具体且应该尽量少使用,所以将它放在第二位。
  1. <a class="..." id="..." data-modal="toggle" href="#">Example link</a>

  2. <input class="form-control" type="text">

  3. <img src="..." alt="...">
复制代码
boolean属性
boolean属性指不需要声明取值的属性,XHTML需要每个属性声明取值,但是HTML5并不需要;
更多内容可以参考 WhatWG section on boolean attributes
boolean属性的存在表示取值为true,不存在则表示取值为false。
  1. <input type="text" disabled>

  2. <input type="checkbox" value="1" checked>

  3. <select>
  4.     <option value="1" selected>1</option>
  5. </select>
复制代码
JS生成标签
在JS文件中生成标签让内容变得更难查找,更难编辑,性能更差。应该尽量避免这种情况的出现。
减少标签数量
在编写HTML代码时,需要尽量避免多余的父节点;
很多时候,需要通过迭代和重构来使HTML变得更少。
  1. <!-- Not well -->
  2. <span class="avatar">
  3.     <img src="...">
  4. </span>

  5. <!-- Better -->
  6. <img class="avatar" src="...">
复制代码
实用高于完美
尽量遵循HTML标准和语义,但是不应该以浪费实用性作为代价;
任何时候都要用尽量小的复杂度和尽量少的标签来解决问题。


分享到:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

58 积分
16 主题
+ 关注