前端开发规范-HTML规范
前端开发规范-HTML规范
1.通用约定
(1)标签
- 自闭和标签,无需闭合(例如:img、input、br、hr等);
- 可选的闭合标签,需闭合(例如:li);
- 尽量减少标签数量;
<img src="//img.w3cschool.cn/attachments/image/cimg/google.png" alt="Google"> <input type="text" name="title"> <ul> <li>Style</li> <li>Guide</li> </ul> <!-- Not recommended --> <span class="avatar"> <img src="..."> </span> <!-- Recommended --> <img class="avatar" src="...">
(2)Class 与 ID
- class 应以功能或内容命名,不以表现形式命名;
- class 与 id 单词字母小写,多个单词组成时,采用中划线
“-”
分隔; - 使用唯一的 id 作为 Javascript hook, 同时避免创建无样式信息的 class;
(3)属性顺序
HTML 属性应该按照特定的顺序出现以保证易读性。
- id
- class
- name
- data-xxx
- src, for, type, href
- title, alt
- aria-xxx, role
<a id="..." class="..." data-modal="toggle" href="###"></a> <input class="form-control" type="text"> <img src="..." alt="...">
(4)引号
属性的定义,统一使用双引号。
<!-- Not recommended --> <span id='j-hook' class=text>Google</span> <!-- Recommended --> <span id="j-hook" class="text">Google</span>
(5)嵌套
a 不允许嵌套 div
这种约束属于语义嵌套约束,与之区别的约束还有严格嵌套约束,比如a 不允许嵌套 a
。
严格嵌套约束在所有的浏览器下都不被允许;而语义嵌套约束,浏览器大多会容错处理,生成的文档树可能相互不太一样。
语义嵌套约束
- <li> 用于 <ul> 或 <ol> 下;
- <dd> , <dt> 用于 <dl> 下;
- <thead> , <tbody> , <tfoot> , <tr> , <td> 用于 <table> 下;
严格嵌套约束
- inline-Level 元素,仅可以包含文本或其它 inline-Level 元素;
- <a> 里不可以嵌套交互式元素 <a> 、 <button> 、 <select> 等;
- <p> 里不可以嵌套块级元素
< div>
、 <h1>~<h6> 、 <p> 、 <ul>/<ol>/<li> 、 <dl>/<dt>/<dd> 、 <form>
等。
(6)布尔值属性
HTML5 规范中 disabled 、 checked 、 selected 等属性不用设置值。
<input type="text" disabled> <input type="checkbox" value="1" checked> <select> <option value="1" selected>1</option> </select>
2.语义化
(1)语义化
没有 CSS
的 HTML
是一个语义系统而不是 UI 系统。
通常情况下,每个标签都是有语义的,所谓语义就是你的衣服分为外套, 裤子,裙子,内裤等,各自有对应的功能和含义。所以你总不能把内裤套在脖子上吧。-- 一丝
此外语义化的 HTML
结构,有助于机器(搜索引擎)理解,另一方面多人协作时,能迅速了解开发者意图。
(2)常见语义标签
标签 | 语义 |
<p> | 段落 |
<h1> <h2> <h3> ... | 标题 |
<ul> | 无序列表 |
<blockquote> | 大段引用 |
<cite> | 一般引用 |
<b> | 为样式加粗而加粗 |
<storng> | 为强调内容而加粗 |
<i> | 为样式倾斜而倾斜 |
<em> | 为强调内容而倾斜 |
code | 代码标识 |
abbr | 缩写 |
<ol> | 有序列表 |
(3)示例
将你构建的页面当作一本书,将标签的语义对应的其功能和含义;
- 书的名称: <h1>
- 书的每个章节标题: <h2>
- 章节内的文章标题: <h3>
- 小标题/副标题: <h4> <h5> <h6>
- 章节的段落: <p>
3.HEAD
(1)文档类型
为每个 HTML 页面的第一行添加标准模式(standard mode)的声明, 这样能够确保在每个浏览器中拥有一致的表现。
<!DOCTYPE html>
(2)语言属性
<!-- 中文 --> <html lang="zh-Hans"> <!-- 简体中文 --> <html lang="zh-cmn-Hans"> <!-- 繁体中文 --> <html lang="zh-cmn-Hant"> <!-- English --> <html lang="en">
(3)字符编码
- 以无 BOM 的 utf-8 编码作为文件格式;
- 指定字符编码的 meta 必须是 head 的第一个直接子元素;
<html> <head> <meta charset="utf-8"> ...... </head> <body> ...... </body> </html>
(4)IE兼容模式
优先使用最新版本的IE 和 Chrome 内核
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
(5)SEO优化
<head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <!-- SEO --> <title>Style Guide</title> <meta name="keywords" content="your keywords"> <meta name="description" content="your description"> <meta name="author" content="author,email address"> </head>
(6)viewport
- viewport : 一般指的是浏览器窗口内容区的大小,不包含工具条、选项卡等内容;
- width : 浏览器宽度,输出设备中的页面可见区域宽度;
- device-width : 设备分辨率宽度,输出设备的屏幕可见宽度;
- initial-scale : 初始缩放比例;
- maximum-scale : 最大缩放比例;
为移动端设备优化,设置可见区域的宽度和初始缩放比例。
<meta name="viewport" content="width=device-width, initial-scale=1.0">
(7)ios图标
- apple-touch-icon 图片自动处理成圆角和高光等效果;
- apple-touch-icon-precomposed 禁止系统自动添加效果,直接显示设计原图;
<!-- iPhone 和 iTouch,默认 57x57 像素,必须有 --> <link rel="apple-touch-icon-precomposed" href="/apple-touch-icon-57x57-precomposed.png"> <!-- iPad,72x72 像素,可以没有,但推荐有 --> <link rel="apple-touch-icon-precomposed" href="/apple-touch-icon-72x72-precomposed.png" sizes="72x72"> <!-- Retina iPhone 和 Retina iTouch,114x114 像素,可以没有,但推荐有 --> <link rel="apple-touch-icon-precomposed" href="/apple-touch-icon-114x114-precomposed.png" sizes="114x114"> <!-- Retina iPad,144x144 像素,可以没有,但推荐有 --> <link rel="apple-touch-icon-precomposed" href="/apple-touch-icon-144x144-precomposed.png" sizes="144x144">
(8)favicon
在未指定 favicon 时,大多数浏览器会请求 Web Server 根目录下的 favicon.ico 。为了保证 favicon 可访问,避免404,必须遵循以下两种方法之一:
- 在 Web Server 根目录放置 favicon.ico 文件;
- 使用 link 指定 favicon;
<link rel="shortcut icon" href="path/to/favicon.ico">
(9)HEAD模板
<!DOCTYPE html> <html lang="zh-cmn-Hans"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Style Guide</title> <meta name="description" content="不超过150个字符"> <meta name="keywords" content=""> <meta name="author" content="name, email@gmail.com"> <!-- 为移动设备添加 viewport --> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- iOS 图标 --> <link rel="apple-touch-icon-precomposed" href="/apple-touch-icon-57x57-precomposed.png"> <link rel="alternate" type="application/rss+xml" title="RSS" href="/rss.xml" /> <link rel="shortcut icon" href="path/to/favicon.ico"> </head>