WEB前端代码规范规范目的为提高团队协作效率,便于后台人员添加功能及前端后期优化维护,输出高质量的文档,特制订此文档。本规范文档一经确认,前端开发人员必须按本文档规范进行前台页面开发。本文档如有不对或者不合适的地方请及时提出,经讨论决定后方可更改。基本准则符合web标准;语义化html;结构、表现、行为分离;兼容性优良。页面性能方面,代码要求简洁明了有序,尽可能的减小服务器负载,保证最快的解析速度。文件规范1.Html,css,js,images文件均归档至相应约定的目录中。WebRootbackStagecssimagesjs后台模块……frontStagecssimagesjs前台模块……WEB-INF全局公共模块……2.html文件命名:英文驼峰式命名,文件名.html。按实际模块需求命名。3.jsp文件命名:英文驼峰式命名,文件名.jsp。按实际模块需求命名。4.css文件命名:英文驼峰式命名,文件名.css。共用base.css,首页index.css,其他页面按实际模块需求命名。5.js文件命名:英文驼峰式命名,文件名.js。共用common.js,其他依实际模块需求命名。html书写规范1.文档类型声明及编码:统一为html5的声明类型!DOCTYPEhtml;编码统一为metacharset=utf-8/,书写时利用IDE实现层次分明的缩进。2.非特殊情况下css文件必须在head.../head之间引入,选择link方式引入而非@import形式。3.非特殊情况下js文件必须在页面底部引入。4.引入样式文件或JavaScript文件时,须略去默认类型声明,写法如下:linkrel=stylesheethref=.../style.../stylescriptsrc=.../script5.引入JS库文件,文件名须包含库名称及版本号及是否为压缩版,比如:jquery-1.4.1.min.js;6.引入插件,文件名格式为库名称+插件名称,比如:jQuery.cookie.js。7.所有HTML标签嵌套必须是正确的,禁止出现多出或者少出闭合标签的情况。8.所有编码均遵循xhtml标准,标签、属性、属性命名必须由小写字母及下划线数字组成,且所有标签必须闭合,包括br(br/),hr(hr/)等;属性值必须用双引号包括。9.充分利用无兼容性问题的html自身标签,比如span、em、strong、optgroup、label……10.需要为html元素添加自定义属性的时候,首先要考虑下有没有默认的已有的合适标签去设置,如果没有,须以data-为前缀来添加自定义属性,避免使用data:等其他命名方式。11.语义化html,如标题根据重要性用h1-h6(同一页面只能有一个h1),段落标记用p,列表用ul,内联元素中不可嵌套块状元素。12.尽可能减少div的嵌套层数。13.在页面中尽量避免使用内嵌样式表,即在标签内使用style=…。14.以背景形式呈现的图片,尽量写入css样式中;重要图片必须加上alt属性;15.特殊符号使用:尽可能使用代码替代:比如(<)、(>)、空格( )、&(&)、”(")等等;16.尽量避免使用过度复杂的HTML结构。css书写规范1.编码统一为utf-8。2.为了避免一些浏览器兼容性问题以及增加样式重用性,每个页面必须引入base.css(详见附件一),此文件不可随意修改。3.class与id的使用:id是唯一的并是父级的,class是可以重复的并是子级的,所以id仅使用在大的模块上,class可用在重复使用率高及子级中。4.为JavaScript预留钩子的命名,请以js_起始,比如:js_hide,js_show。5.class与id命名:使用英文命名,命名要语义化,简明化,但不要使用诸如first,last之类的命名。使用驼峰式和下划线分隔相结合的命名规则,即命名应以父级加子级的命名规范,如:父级的类为simple子级的类应该为simple_first,以此类推,但是尽量避免出现超过四级的类命名。6.css属性书写顺序,建议遵循:自身属性--布局定位属性--文本属性--其他属性。此条可根据自身习惯书写,但尽量保证同类属性写在一起。属性列举:自身属性主要包括:width、height、margin、padding、border、background;布局定位属性主要包括:display、list-style、position(相应的top、right、bottom、left)、float、clear、visibility、overflow;文本属性主要包括:color、font、text-decoration、text-align、vertical-align、white-space其他:content;7.书写代码前,考虑并提高样式重复使用率。8.充分利用html自身属性及样式继承原理减少代码量。9.样式表中中文字体名,请务必转码成unicode码,以避免编码错误时乱码。10.背景图片请尽可能使用sprite技术,减小http请求,考虑到多人协作开发,sprite按模块制作。11.使用table标签时(尽量避免使用table标签),请不要用width、height、cellspacing、cellpadding等table属性直接定义表现,应尽可能的利用table自身私有属性分离结构与表现,如:thead、tr、th、td、tbody、tfoot、colgroup、scope。12.用png图片做图片时,要求图片格式为png-8格式,若png-8实在影响图片质量或其中有半透明效果,请为ie6单独定义背景:_background:none;_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=crop,src=’img/bg.png’);13.避免兼容性属性的使用,比如text-shadow、css3的相关属性;14.减少使用影响性能的属性,比如position:absolute、float;15.代码缩进与格式:开发阶段单行书写,系统交付时可再将所有css进行压缩;使用Tab键进行缩进,每层缩进一个Tab键16.背景重复,确保使用的图片在与迭代方向相同的长度要大于1像素而小于10像素。简单点说,就是x轴迭代,宽度要在1和10之间,y轴迭代,长度要在1和10之间。JavaScript书写规范1.文件编码统一为utf-8,书写过程过,每条语句必须以分号结束。2.变量命名:驼峰式命名。首字母须小写,如:iTaoLun。3.类命名:驼峰式命名。首字母大写,如:ITaoLun。4.函数命名:驼峰式命名。首字母小写。如:iTaoLun()。5.构造函数命名:全部大写。6.命名语义化,尽可能利用英文单词或其缩写。7.尽量避免使用存在兼容性及消耗资源的方法或属性,比如eval()、innerText。8.后期优化中,JavaScript非注释类中文字符须转换成unicode编码使用,以避免编码错误时乱码显示。9.代码结构明了,加适量注释。提高函数重用率。10.注重与html分离,减小reflow,注重性能。11.减少DOM访问次数。方法是将得到的元素用变量存储起来。12.减少DOM事件绑定。13.将自己写的JS用匿名函数包起来,避免变量冲突。(function(){})()图片规范1.所有页面元素类图片均放入images文件夹,测试用图片放于images/demo文件夹;2.图片格式仅限于gif、png、jpg;3.命名全部用小写英文字母、数字、_的组合,其中不得包含汉字、空格、特殊字符;尽量用易懂的词汇。4.在保证视觉效果的情况下选择最小的图片格式与图片质量,以减少加载时间。5.尽量避免使用半透明的png图片。6.运用csssprite技术集中小的背景图或图标,减小页面http请求,但注意,请务必在对应的psd源图中划参考线,并保存至images目录下。注释规范1.html注释:注释格式!--注释--,'--'只能在注释的始末位置,不可置入注释文字区域;2.css注释:注释格式/*注释*/;3.JavaScript注释,单行注释使用'//单行注释',多行注释使用/*多行注释*/。语言组织类1.新增,而非“添加,增加”之类的词语2.编辑,而非“修改,更新”之类的词语3.保存,而非“提交”之类的词语4.所有操作除了保存表单外,保存用户操作统一使用“确定”词语开发及测试工具约定建议使用Myeclipse、eclipse、Aptana,亦可根据自己喜好选择,但须遵循如下原则:1.不可利用IDE的视图模式“画”代码。2.不可利用IDE生成相关功能代码,比如Dw内置的一些功能js;3.编码必须格式化,比如缩进;4.测试工具:前期开发仅测试FireFox、IE6、IE7、IE8、IE9,后期优化时加入Opera、Chrome、Safari;5.建议测试顺序:FireFox--IE9--IE8--IE7--IE6--Opera--Chrome--Safari,必须安装firebug插件。base.css/*CSSreset*/body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;}a{text-decoration:none;cursor:pointer;}a:hover,a:focus{text-decoration:underline;}body,button,input,select,textarea,a/*forie*/{font:12px/1.5tahoma,arial,\5b8b\4f53,sans-serif;}button,input,select,textarea{font-size:100%;}/*文字排版*/.f12{font-size:12px;}.f13{font-size:13px;}.f14{font-size:14px;}.f16{font-size:16px;}.f20{font-size:20px;}.fb{font-weight:bold;}.fn{font-weight:normal;}.t2{text-indent:2em;}.lh150{line-height:150%;}.lh180{line-height:180%;}.lh200{line-height:200%;}.unl{text-decoration:underline;}.no_unl{text-decoration:none;}/*定位*/.tl{text-align:left;}.tc{text-align:center;}.tr{text-align:right;}.bc{margin-left:auto;margin-right:auto;}.fl{float:left;display:inline;}