收藏 分享(赏)

web前端开发规范.doc

上传人:精品资料 文档编号:10203972 上传时间:2019-10-19 格式:DOC 页数:23 大小:33.58KB
下载 相关 举报
web前端开发规范.doc_第1页
第1页 / 共23页
web前端开发规范.doc_第2页
第2页 / 共23页
web前端开发规范.doc_第3页
第3页 / 共23页
web前端开发规范.doc_第4页
第4页 / 共23页
web前端开发规范.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、1Web 前端开发规范手册一、规范目的1.1 概述 . 1二、文件规范2.1 文件命名规则.12.2 文件存放位置.22.3 html 书写规范.22.4 css 书写规范72.5 JavaScript 书写规范122.6 图片规范.192.7 注释规范.20 2.8 css 浏览器兼容21一、规范目的1.1 概述为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进行前台页面开发. 本文档如有不对或者不合适的地方请及时提出, 经讨论决定后可以更改此文档.2二、文件规范2.1 文件命名规则文件夹和

2、文件名一律全部用小写英文单词,禁止出现简拼、拼音、数字、无意义的命名,英文单词尽量使用一个进行描述,简洁易懂;多个单词用驼峰命名法。2.2 文件存放位置cn 存放中文 HTML 文件en 存放英文 HTML 文件flash 存放 Flash 文件images 存放图片文件imagestudio 存放 PSD 源文件flashstudio 存放 flash 源文件inc 存放 include 文件library 存放 DW 库文件media 存放多媒体文件project 存放工程项目资料temp 存放客户原始资料js 存放 JavaScript 脚本css 存放 CSS 文件 2.3 html

3、书写规范 为每个 HTML 页面的第一行添加标准模式(standard mode)的声明,确保在每个浏览器中拥有一致3的展现。 文档类型声明统一为 HTML5 声明类型,编码统一为 UTF-8。中添加信息。/作者/网页描述/关键字,“ , ”分隔/设定网页的到期时间。一旦网页过期,必须到服务器上重新调阅/禁止浏览器从本地机的缓存中调阅页面内容/用来防止别人在框架里调用你的页面/跳转页面,5 指时间停留 5 秒 网页搜索机器人向导。用来告诉搜索机器人哪些页面需要索引,哪些页面不需要索引/content 的参数有all,none,index,noindex,follow,nofollow,默认是

4、all/收藏图标/网页不会被缓存IE 支持通过特定标签来确定绘制当前页面所应该采用的 IE 版本。除非有强烈的特殊需求,否则最4好是设置为 edgemode ,从而通知 IE 采用其所支持的最新的模式。 非特殊情况下 CSS 样式文件外链至 HEAD 之间,JAVASCRIPT 文件外链至页面底部。引入 JAVASCRIPT 库文件,文件名须包含库名称及版本号及是否为压缩版。jQuery-1.8.3.min.js引入 JAVASCRIPT 插件, 文件名格式为库名称+.+插件名称。jQuery.cookie.js5 HTML 属性应当按照以下给出的顺序依次排列,来确保代码的易读性。Classi

5、d 、 namedata-*src、for、 type、 hreftitle、altaria-*、 role避免使用中文拼音尽量简易并要求语义化。CLASS nHeadTitle CLASS 遵循小驼峰命名法(little camel-case)ID n_head_title ID 遵循名称+_NAME N_Head_Title NAME 属性命名遵循首个字母大写+_当 JAVASCRIPT 获取单个元素时,通常使用 document.getElementById 来获取 dom 元素,document.getElementById 兼容所有浏览器,但 IE 浏览器会混淆元素的 ID 和 NA

6、ME 属性,所以要区分ID 和 NAME 命名。6 特殊符号应使用转意符。 空格 含有描述性表单元素(INPUT,TEXTAREA)添加 LABEL。测试 多用无兼容性问题的 HTML 内置标签,比如 span、em、strong 、optgroup、label 等,需要自定义 html 标签属性时,首先考虑是否存在已有的合适标签可替换,如果没有,可使用须以“data-”为前缀来添加自定义属性,避免使用其他命名方式。 语义化 HTML。 尽可能减少嵌套。 书写链接地址时避免重定向。href=“http:/ /即在 URL 地址后面加“/” HTML 中对于属性的定义,确保全部使用双引号,绝不要

7、使用单引号72.4 css 书写规范 为了欺骗 W3C 的验证工具 ,可将代码分为两个文件,一个是针对所有浏览器,一个只针对 IE。即将所有符合 W3C 的代码写到一个文件中,而一些 IE 中必须而又不能通过 W3C 验证的代码(如:cursor:hand;)放到另一个文件中,再用下面的方法导入。 CSS 样式新建或修改尽量遵循以下原则。根据新建样式的适用范围分为三级:全站级、产品级、页面级。尽量通过继承和层叠重用已有样式。不要轻易改动全站级 CSS。改动后,要经过全面测试。 CSS 属性显示顺序。显示属性元素位置元素属性元素内容属性CSS 书写顺序。8.header /* 显示属性 */di

8、splay | visibilitylist-styleposition top | right | bottom | leftz-indexclearfloat/* 自身属性 */width max-width | min-widthheight max-height | min-heightoverflow | clipmarginpaddingoutlineborderbackground/* 文本属性 */colorfonttext-overflowtext-align9text-indentline-heightwhite-spacevertical-aligncursorconte

9、nt;兼容多个浏览器时,将标准属性写在底部。-moz-border-radius: 15px; /* Firefox */-webkit-border-radius: 15px; /* Safari 和 Chrome */border-radius: 15px; /* Opera 10.5+, 以及使用了 IE-CSS3 的 IE 浏览器 */标准属性 使用选择器时,命名比较短的词汇或者缩写的不允许直接定义样式。.hd,.bd,.td;/如这些命名可用上级节点进行限定。.recommend-mod .hd多选择器规则之间换行,即当样式针对多个选择器时每个选择器占一行。button.btn,in

10、put.btn,inputtype=“button“ ;10优化 CSS 选择器。#header a color: #444; ;/*CSS 选择器是从右边到左边进行匹配*/浏览器将检查整个文档中的所有链接和每个链接的父元素,并遍历文档树去查找 ID 为 header 的祖先元素,如果找不到 header 将追溯到文档的根节点,解决方法如下。避免使用通配规则和相邻兄弟选择符、子选择符,、后代选择符、属性选择符等选择器不要限定 id 选择符,如 div#header(提权的除外)不要限定类选择器,如 ul.recommend(提权的除外)不要使用 ul li a 这样长的选择符避免使用标签子选择

11、符,如#header li a 使用 z-index 属性尽量 z-index 的值不要超过 150(通用组的除外) ,页面中的元素内容的 z-index 不能超过 10(提示框等模块除外但维持在 150 以下) ,不允许直接使用(9999999)之间大值。 尽量避免使用 CSS Hack。property:value; /* 所有浏览器 */+property:value; /* IE7 */_property:value; /* IE6 */*property:value; /* IE6/7 */property:value9; /* IE6/7/8/9,即所有 IE 浏览器 */* ht

12、ml selector ; /* IE6 */*:first-child+html selector ; /* IE7 */11htmlbody selector ; /* 非 IE6 */-moz-document url-prefix() ; /* firefox */media all and (-webkit-min-device-pixel-ratio:0) ; /* saf3+/chrome1+ */media all and (-webkit-min-device-pixel-ratio:10000),not all and (-webkit-min-device-pixel-r

13、atio:0) ; /* opera */media screen and (max-device-width: 480px) ; /* iPhone/mobile webkit */ 避免使用低效的选择器。body * ;ul li a ;#footer h3 ;ul#top_blue_nav ;#searbar span.submit a ; /* 反面示例 */ 六个不要三个避免一个使用。不要在标签上直接写样式不要在 CSS 中使用 expression不要在 CSS 中使用import不要在 CSS 中使用!important不要在 CSS 中使用“*”选择符不要将 CSS 样式写为单

14、行避免使用 filter12避免使用行内(inline)样式避免使用“*”设置margin: 0; padding: 0;使用 after 或 overflow 的方式清浮动 减少使用影响性能的属性。position:absolute;float:left;/如这些定位或浮动属性减少在 CSS 中使用滤镜表达式和图片 repeat,尤其在 body 当中,渲染性能极差, 如果需要用 repeat 的话, 图片的宽或高不能少于 8px。2.5 javaScript 书写规范 命名规范。常量名全部大写并单词间用下划线分隔如:CSS_BTN_CLOSE、 TXT_LOADING对象的属性或方法名小驼

15、峰式(little camel-case)如:init、bindEvent 、updatePosition示例:Dialog.prototype = init: function () ,bindEvent: function () ,13updatePosition: function () ;类名(构造器)小驼峰式但首字母大写如:Current 、DefaultConfig函数名小驼峰式如:current() 、defaultConfig()变量名小驼峰式如:current、defaultConfig私有变量名小驼峰式但需要用_开头如:_current 、_defaultConfig变量名

16、的前缀续 代码格式。“()“前后需要跟空格“=“前后需要跟空格“,“后面需要跟空格14JSON 对象需格式化对象参数if、while、for、do 语句的执行体用“括起来“格式如下。if (a=1) /代码;避免额外的逗号。var arr = 1,2,3,;for-in 循环体中必须用 hasOwnProperty 方法检查成员是否为自身成员,避免来自原型链上的污染。长语句可考虑断行。TEMPL_SONGLIST.replace(TABLE, daresults).replace(PREV_NUM, prev).replace(NEXT_NUM, next).replace(CURRENT_N

17、UM, current).replace(TOTAL_NUM, da.page_total);为了避免和 JSLint 的检验机制冲突, “.”或“+”这类操作符放在行尾。TEMPL_SONGLIST.replace(TABLE, daresults).replace(PREV_NUM, prev).15replace(NEXT_NUM, next).replace(CURRENT_NUM, current).replace(TOTAL_NUM, da.page_total);如果模块代码中,使用其它全局变量想跳过 JSLint 的检查,可以在该文件中加入 /*global*/声明。/*glo

18、bal alert: true, console: true, top: true, setTimeout: true */使用严格的条件判断符。用=代替=,用!=代替!=,避免掉入=造成的陷阱在条件判断时,这样的一些值表示 false。nullundefined 与 null 相等字符串数字 0NaN在=时,则会有一些让人难以理解的陷阱。(function () var undefined;undefined = null; / true1 = true; /true2 = true; / false160 = false; / true0 = ; / trueNaN = NaN;/ fal

19、se = false; / true = !; / true)();对于不同类型的 = 判断,有这样一些规则,顺序自上而下:undefined 与 null 相等一个是 number 一个是 string 时,会尝试将 string 转换为 number尝试将 boolean 转换为 number0 或 1尝试将 Object 转换成 number 或 string而这些取决于另外一个对比量,即值的类型,所以对于 0、空字符串的判断,建议使用=。=会先判断两边的值类型,类型不匹配时为 false。 下面类型的对象不建议用 new 构造。new Numbernew String17new Boo

20、leannew Object /用代替new Array /用代替引用对象成员用 obj.prop 代替 obj“prop“,除非属性名是变量。 从 number 到 string 的转换。/* 推荐写法*/var a = 1;typeof(a); /“number“console.log(a); /1var aa=a+;typeof(aa); /“string“console.log(aa); /1/* 不推荐写法*/new String(a)或 a.toString()从 string 到 number 的转换,使用 parseInt,必须显式指定第二个参数的进制。/* 推荐写法*/var

21、 a = 1;var aa = parseInt(a,10);typeof(a); /“string“18console.log(a); /1typeof(aa); /“number“console.log(aa); /1从 float 到 integer 的转换。/* 推荐写法*/Math.floor/Math.round/Math.ceil/* 不推荐写法*/parseInt字符串拼接应使用数组保存字符串片段,使用时调用 join 方法。避免使用+ 或+=的方式拼接较长的字符串,每个字符串都会使用一个小的内存片段,过多的内存片段会影响性能。/*推荐的拼接方式 array 的 push、jo

22、in*/var str=,list=测试 A,测试 B;for (var i=0 , len=list.length; i + listi + );console.log(str.join(); /测试 A测试 B/* 不推荐的拼接方式+=*/var str = ,list=测试 A,测试 B;19for (var i = 0, len = list.length; i + listi + ;console.log(str); /测试 A测试 B 尽量避免使用存在兼容性及消耗资源的方法或属性。不要使用 with,void,evil,eval_r,innerText 注重 HTML 分离, 减小

23、 reflow, 注重性能。2.6 图片规范 命名应用小写英文、数字、_组合,便于团队其他成员理解。header_btn.gifheader_btn2.gif 页面元素类图片均放入 img 文件夹,测试用图片放于 img/testimg 文件夹,psd 源图放入 img/psdimg 文件夹。 图片格式仅限于 gif、png、jpg 等。用 png 图片做图片时 ,要求图片格式为 png-8 格式,若 png-8 实在影响图片质量或其中有半透明效果,请为 ie-6 单独定义背景,并尽量避免使用半透明的 png 图片。20 背景图片请尽可能使用 sprite 技术, 减小 http 请求。2.7

24、 注释规范 JAVASCRIPT、CSS 文件注释需要标明作者、文件版本、创建/修改时间、重大版本修改记录、函数描述、文件版本、创建或者修改时间、功能、作者等信息。/* * 注释块 */中间可添加如下信息file 文件名addon 把一个函数标记为另一个函数的扩张,另一个函数的定义不在源文件中argument 用大括号中的自变量类型描述一个自变量author 函数/类作者的姓名base 如果类是继承得来,定义提供的类名称class 用来给一个类提供描述,不能用于构造器的文档中constructor 描述一个类的构造器deprecated 表示函数/类已被忽略exception 描述函数/类产生

25、的一个错误exec extends 表示派生出当前类的另一个类fileoverview 表示文档块将用于描述当前文件,这个标签应该放在其它任何标签之前final 指出函数/类ignore 让 jsdoc 忽视随后的代码21link 类似于link 标签,用于连接许多其它页面member 定义随后的函数为提供的类名称的一个成员param 用大括号中的参数类型描述一个参数private 表示函数/类为私有,不应包含在生成的文档中requires 表示需要另一个函数/ 类return 描述一个函数的返回值see 连接到另一个函数 /类throws 描述函数/类可能产生的错误type 指定函数/成员的

26、返回类型version 函数/类的版本号 2.8 css 浏览器兼容 CSS hack一、标识区别:区别 IE6,IE7,IE8,FF。1. IE 都能识别 * ; 标准浏览器(如 FF)不能识别*;2. IE6 能识别*,但不能识别 !important; IE6 在样式前面加_3. IE7 能识别*,也能识别!important;4.IE8 能识别9 例如:background:red 9;5. firefox 不能识别*,但能识别!important;1.IE6 和 firefox 的区别:background:orange;*background:blue;意思就是火狐浏览器的背景颜色

27、是橙色, 而 IE 浏览器的背景色是蓝色.2. IE6 和 IE7 的区别:22background:green !important;background:blue;意思指的是:IE7 的背景颜色是绿色,IE6 的背景颜色是蓝色3. IE7 和 FF 的区别:background:orange; *background:green;意思指的是:火狐浏览器的背景颜色是橙色, 而 IE7 的背景颜色是绿色4. FF,IE7,IE6 的区别:background:orange;*background:green !important;*background:blue;意思是火狐浏览器的的背景橙色,

28、IE7 浏览器的背景颜色是绿色, 而 IE6 浏览器的颜色是蓝色.二、实践建议(1). 开发平台的选择在 Firefox 上编写 CSS, 同时兼容其他浏览器的 . 这样做肯定会比在 IE 做好再到别的浏览器兼容来得容易,因为 IE 对老标准支持还是很不错的, 而 IE 的一些特有功能人家却不支持. 所以推荐以 Firefox 结合Firebug 扩展作为平台。(2). CSS Hack 的顺序使用 Firefox 作为平台, 只要代码写得够标准, 其实要 Hack 的地方不会很多的, IE 以外的浏览器几乎都不会有问题, 所以可以暂时忽略,顺序如下:Firefox - IE6 - IE7 -

29、 其他(3). Hack 的方法说到方法有两种, 一种是在不同文件中处理 , 另一种则是在同一个文件中处理 . 其实作用是相同的,只是出发点不一样而已.同一文件中处理.23如: id=“bgcolor“的控件要在 IE6 中显示蓝色, IE7 中显示绿色, Firefox 等其他浏览器中显示红色。IE6 不认 !important,也不认 *+html.所以 IE6 只能是 blue.IE7 认 !important,也认 *+html,优先度: (*+html + !important) !important +html. IE7 可以是red,blue 和 green,但 green 的优

30、先度最高.Firefox 和其他浏览器都认 !important. !important 优先, Firefox 可以是 red 和 blue,但 red 优先度高.上述的优先符号均是 CSS3 标准允许的,其他浏览器也还有其他的 Hack 方法, 但我迄今还没遇到过 Firefox 正常, IE 以外的其他浏览器不正常的情况,所以无可分享 .只要代码规范, 相信这种情况的发生应该是很罕见(JavaScript 除外 ).2. 不同文件中处理.为什么同一文件中可以处理还要写在多个文件里面针对不同的浏览器?这是为了欺骗 W3C 的验证工具, 其实只需要两个文件,一个是针对所有浏览器的,一个只为 IE 服务.将所有符合 W3C 的代码写到一个里面去,而一些 IE 中必须的,又不能通过 W3C 验证的代码 (如: cursor:hand;)放到另一个文件中,再用下面的方法导入.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报