前端开发规范

一.基本规范

1.基本原则

结构、样式、行为分离

尽量确保文档和模板只包含html 结构 ,样式都放到样式表里,行为都放到脚本里。

缩进

统一两个空格缩进,不要使用 Tab 或 空格混搭。

文件编码

使用不带 BOM 的UTF-8 编码。

1.在HTML中指定编码 <meta charset="utf-8">;

2.无需使用 @charset 指定样式表的编码,它默认为 UTF-8;

一律使用小写字母

省略外链资源 URL 协议部分

省略外链资源 URL 中的 http / https 协议,使 URL 成为相对地址,其他协议的不能省(ftp)。

统一注释

HTML注释:模块注释,区块注释;

css注释:组件块和子组件块以及声明块之间使用一空行分割,子组件块之间三空行分隔。

js注释:单行注释,多行注释,函数、方法注释,文件注释。

2.html

遵循html标准和语义,尽量使用最少的标签并保持最小的复杂度。

2.1 通用约定

标签

* 自闭合标签,无需闭合(例如:img , input , br , hr 等);

* 可选的闭合标签,需闭合(例如</li> 或 </body> 等);

* 尽量减少标签数量;

Class 与 ID

* class应以功能或内容命名,不以表现形式命名;

* class 与 id 单词字母小写,多个单词组成时,采用中划线 -  分隔;

* 使用唯一的 id 作为 js ,同时避免创建无样式信息的class;

属性顺序

html属性应按照特定的顺序出现以保证易读性。

id , class , name , data-xxx , src , for , type , href , title  , alt , aria-xxx , role.

引号

属性的定义,统一使用双引号。

嵌套

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> 等;

布尔值属性

html5 规范中 display , checked , selected 等属性不用设置值。

2.2 语义化

2.3 HEAD

3. CSS

3.1 代码组织

* 以组件为单位组织代码段;

* 制定一致的注释规范;

* 组件块和子组件块以及声明块之间使用一空行分割,子组件块之间三空行分隔。

Class 与 ID

* 使用语义化、通用的命名方式;

* 使用连字符 - 作为ID,class 名称界定符,不要驼峰命名法和下划线;

* 避免选择器嵌套层级过多,尽量少于3级;

* 避免选择器, Class , ID 叠加使用;

声明块格式

* 选择器分组时,保持独立的选择器独占一行;

* 声明块的左括号 { 前添加一个空格;

* 声明块的右括号 } 应独占一行;

* 声明语句中的 :后应该添加一个空格;

* 应以分号 ; 结尾;

* 一般以逗号分隔的属性值,每个逗号后应该添加一个空格;

* rgb() 、rgba() 、hsl() 、hsla() 或rect() 括号内的值,逗号分隔,但逗号后不添加一个空格;

* 对于属性值或颜色参数,省略小于1 的小数前面的0;

* 十六进制值应该全部小写和尽量简写;

* 避免为 0 指定单位;

* 将媒体查询放在尽可能相关规则的附近。不要单独打包放在单一文件中,避免遗忘;

* 不要用 @import ,与 <link> 相比 ,@import 要慢很多,会增加额外请求。替代办法:

  使用多个元素;

  通过 Sass 或 Less 类似的 css 预处理器将多个css编译为一个文件;

  其他 css 文件合并工具;

链接的样式顺序

3.2 模块组织

组件命名

Components 最少以两个单词命名, 通过 -  分离;

* 点赞按钮( .like-button )

* 搜索框( .search-form)

* 文章卡片( .article-card)

 ELements(元素)

ELements 是 Components 中的元素

ELements 的类名尽可能取一个单词;倘若使用两个及以上的单词表达,不应该使用中划线和下划线。

避免标签选择器。

 Variants 的 classname 应该带有前缀中划线 - ;

原文地址:https://www.cnblogs.com/wangqian888/p/11195215.html