FE Note
hi
web前端规范

web前端规范文档

规范目的

使开发流程更加规范

通用规范

  • TAB键使用两个空格代替(WINDOW 下TAB键占四个空格,LINUX 下TAB键占八个空格)。

  • CSS 样式属性或者JavaScript代码后加 “ ; ” 方便压缩工具 “断句”。

  • 文件内容编码统一为UTF-8。

  • CSS、JavaScript 中的非注释类中文字符必须转换成Unicode编码使用,以避免编码错误时乱码显示。

文件规范

  • 文件名用英文单词,多个单词使用驼峰命名法。
  • 一些浏览器会将含有这些词的作为广告拦截,文件名、ID、CLASS等所有命名避免以下词汇。
ad 、 ads 、 adv 、 banner 、 sponsor 、 gg 、 guangg 、 guanggao 等

HTML书写规范

  • 为每一个html页面的第一行添加标准模式(standard mode)的声明,确保在每个浏览器中拥有一致的表现。 文档类型声明统一为HTML5声明类型。
<!DOCTYPE html>
  • 字符编码 通过明确声明字符编码,能够确保浏览器快速容易的判断页面内容的渲染方式。这样做的好处是,可以避免在HTML中使用字符实体标记(character entity),从而全部与文档编码一致(约定一致采用UTF-8)。
<meta charset="UTF-8">
  • IE兼容模式 IE支持通过特定的标签来确定绘制当前页面所应该采用的IE版本。除非有强烈的特殊需求,否则最好设置为 edge mode ,从而通知IE采用其所支持的最新的模式。
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
  • 元素
  1. HTML5元素
  • section 表示文档中的节、区段,可以和 h1 - h6 一起来显示文档结构。
  • article 表示一块比较独立的内容或者主题内容,块级元素,比如 blog 的内容,报纸的文章。
  • aside 表示 article 以外的内容,而且应该和 article 有一定的关系,块级元素。
  • hgroup 表示一个文档、区段( section )的标题组合。
  • header 表示页眉,页头。
  • footer 表示页脚。
  • nav 表示导航。
  • figure 表示以相对独立的或外引的元素,如 img 、 video 。
  • figcaption 表示 figure 内容的标题。
<!-- hgroup 示例 -->
<hgroup>
  <h1>文档主标题</h1>
  <h2>文档副标题</h2>
</hgroup>

<!-- figure 示例 -->
<figure>
  <video src="mp4"></video>
  <figcaption>示例</figcaption>
</figure>

<figure>
  <img src="img" alt="示例图片" />
  <figcaption>示例</figcaption>
</figure>
  1. 结构性元素
  • p 表示段落。只能包含内联元素,不能包含块级元素。
  • div 本身无特殊含义,可用于布局。几乎可以包含任何元素。
  • br 表示换行符。
  • hr 表示水平分割线。
  • h1 - h6 表示标题。其中 h1 用于表示当前页面最重要的内容的标题。
  • blockquote 表示引用,可以包含多个段落。请勿纯粹为了缩进进而使用 blockquote ,大部分浏览器默认将 blockquote 渲染为带有左右缩进。
  • pre 表示一段格式化好的文本。
  1. 头部元素
  • title 每个页面必须有且仅有一个 title 元素。
  • base 可用场景:首页、频道等大部分连接都为新窗口打开的页面。
  • link link 用于引入 css 资源时,可省去 media (默认为 all )和 type (默认为 text/css )属性。
  • style type 默认为 text/css ,可以省去。
  • script type 属性可以省去。不赞成使用 lang 属性。
  • noscript 在用户代理不支持 JavaScript 的情况下提供说明。
  1. 文本元素
  • a 存在 href 属性时表示链接,无 href 属性但有 name 属性表示锚点。
  • em / strong em 表示句意强调,加与不加会引起语义变化,可用于表示不同的心情或者语调;strong 表示重要性强调,可用于局部或全局,strong 强调的是重要性,不会改变句意。
  • abbr 表示缩写。
  • sub/sup 主要用于数学和化学公式,sup 还可用于脚注。
  • span 本身无特殊含义。
  • ins/del 分别表示从文档中增加(插入)和删除。
  1. 媒体元素
  • img 请勿将img元素作为定位布局的工具,其中的 src 属性必须赋值,必要时给 img 元素增加 alt 属性。
  • object 可以用来插入 Flash 。
  1. 列表元素
  • dl 表示关联列表,dd 是对 dt 的解释,dt 和 dd 的对应关系比较随意,一个 dt 对应多个 dd 、多个 dt 对应一个 dd ,都合法。可用于名词/单词解释、日程列表、站点目录。
  • ul 表示无序列表。
  • ol 表示有序列表,可用于排行榜等。
  • li 表示列表项,必须是 ul / ol 的子元素。
  1. 表单元素
  • 推荐使用 button 代替 input, 但必须声明 type 。
  • 表单元素的 name 不能设定为 action , enctype , method , novalidate , target , submit 会导致表单提交混乱。

属性顺序

  1. HTML 属性应当按照以下给出的顺序依次排列,确保代码的易读性。
  • CLASS
  • ID 、name
  • data-*
  • src 、 for 、 type 、href
  • title 、alt
  • aria-* 、 role
  1. CLASS 用于标识高度可复用组件,因此应该排在首位。 ID 用于标识具体组件,应当谨慎使用(例如,页面内的书签),因此排在第二位。如:
<a class="..." id="..." data-modal="toggle" href="#">示例</a>
<input class="form-control" type="text">
<img src="img" alt="...">

文件和目录命名约定

  1. 一律小写,必须是英文单词或者汉语拼音,以英语单词优先,多个单词以连字符( - )连接。只能出现小写英文字母,数字和连字符。
  2. 很多浏览器会将含有这些词的作为广告拦截:ad 、ads 、 adv 、 banner 、 sponsor 、 gg 、guangg 、guanggao 等 页面中尽量避免采用以上词汇来命名。
  3. 该命令规范适用于所有前端维护的内容和相关目录。( html 、css 、js 、png 、 gif 、jpg 、ico)。

空格/标签/注释

  1. 用两个空格来代替制表符(tab)– 这是唯一能保证在所有环境下获得一致展现的方法。
  2. 嵌套元素应当缩进依次 – 即两个空格。
  3. 对于属性的定义,确保全部使用双引号,绝不要使用单引号。
  4. 不要省略可选的结束标签,如: , 。
  5. 习惯性书写注释,方便日后维护。

文件编码约定

所有文件统一采用 UTF-8 无 BOM 编码。换行格式为 unix 格式。

id 和 class 命名约定

  1. id 和 class 的命名基本原则:内容优先,表现为辅。首先根据内容来命名,如:#header , #footer , .main-nav 如根据内容无法找到合适的命名,可以在结合表现进行命名,如:col-main , col-sub , col-extra , blue-box
  2. id 和 class 的名称一律小写,多个单词以连接字符连接,如: main-wrap
  3. id 和 class 的名称只能出现,小写字母,数字和连字符( - ) ( js 钩子除外)
  4. id 和 class 的名称尽量使用英文单词命名,如确实找不到合适的单词,可以使用拼音,如:zhidao-com
  5. 在不影响语意的情况下,id 和 class 的名称可以适当使用缩写,如:col , nav , hd , bd , fd ( 缩写只用来表示结构,不允许写任何样式 )。不要自造缩写。
  6. class 对于选中命名 .selected ;对于 :hover ,不支持的使用 .hover ,隐藏使用 .hide
  7. id 和 class 的选择,如果只是用一次,使用 id ,如果使用多次使用 class ,如果需要和 js 交互,使用 id ,如果需要交互并且页面中有大量重复,请参见下一条。
  8. 对于作为 js 钩子的 id 和 class 命名规则以 “J_”开头( J ,象形钩子的形状 ),后面加上应有的命名,在使用 class 的时候需要放在最前面。如:class="J_tab-content some-mod-content"。(注意:钩子,不允许在 css 中定义任何的样式效果 )。
  9. 很多浏览器会将含有这些词的作为广告拦截:adadsadvbannersponsorggguanggguanggao等 页面中尽量避免采用以上词汇来命名。

文件引用

  1. 页面中不允许出现 css 内容( 包括行内样式和 style )。
  2. 每个页面中至多包括3个 css 文件,1个产品级1个模块级1个页面级别。

选择器

  1. 命名比较短的词,或者缩写的不允许直接定义样式,如:.title , .hd , .bd ,.body必须用上级节点进行限定,如:.recommend-mod .title

通用结构

  1. 页面中的块采用如下结构
<div class="mod recommend-mod">
  <div class="hd recommend-title">Title</div>
  <div class="bd recommend-body">contents</div>
  <div class="ft recommend-footer">footer</div>
</div>

没有内容的部分可以省略,其中用来表示结构的 modhdbdft不允许直接定义样式(避免嵌套带来样式问题),需要定义样式的时候需要另外增加 class 以控制样式如:

<div class="mod recommend-mod">
  <div class="hd recommend-title">Title</div
  <div class="bd recommend-body">contents</div>
  <div class="ft recommend-footer">footer</div>
</div>

当两个以上的结构不存在的时候可以不采用此结构,如:没有 hd 和 ft , bd 也可以省略。


最后修改于 2017-06-02