一、背景介绍

为什么要遵守编码规范?

1、好的编码规范可以尽可能的减少一个软件的维护成本,并且几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护;

2、好的编码规范可以改善软件的可读性,可以让开发人员尽快而彻底地理解新的代码;

3、好的编码规范可以最大限度的提高团队开发的合作效率;

4、长期的规范性编码还可以让开发人员养成好的编码习惯,甚至锻炼出更加严谨的思维。

二、知识剖析

基本准则

符合web标准,语义化html,结构表现行为分离,兼容性优良。页面性能方面,代码要求简洁明了有序,尽可能的减小服务器负载,保证最快的解析速度。

html规范

1、页面的第一行添加标准模式声明

2、代码缩进:tab键设置四个空格(通常在软件右下角设置相应空格大小)

3、html中除了开头的DOC和'UTF-8'或者head里特殊情况可以大写外,其他都为小写,css类都为小写

4、建议为html根元素指定lang属性,从而为文档设置正确的语言lang="zh-CN"

5、不同doctype在不同浏览器下会触发不同的渲染模式< meta http-equiv="X-UA-Compatible" content="IE=Edge">

6、非特殊情况下样式文件必须外链至< head >...< /head>之间;非特殊情况下JavaScript文件必须外链至页面底部

7、尽可能减少div嵌套

8、在页面中尽量避免使用style属性,即style="…";写在相应的样式文件中

9、对于属性的定义,确保全部使用双引号,绝不要使用单引号

10、背景图片请尽可能使用sprite技术,减小http请求

11、给区块代码及重要功能(比如循环)加上注释,方便后台添加功能

12、不要使用@import,与标签相比,@import指令要慢很多,不光增加了额外的请求次数,还会导致不可预料的问题。

CSS规范

排版规范

1、如果是在html中写内联的css,则必须写成单行

2、每一条规则的大括号{前后加空格

3、属性名冒号之前不加空格,冒号之后加空格

4、每一个属性值后必须添加分号,并且分号后加空格

5、多个selector共用一个样式集,则多个selector必须写成多行形式

class命名

1、规则命名中,一律采用小写加中划线的方式,不允许使用大写字母或_

2、命名避免使用中文拼音,应该采用更简明有语义的英文单词进行组合

3、不允许通过1、2、3等序号进行命名;避免class与id重名

4、class用于标识某一个类型的对象,命名必须言简意赅

5、尽可能提高代码模块的复用,样式尽量用组合的方式

6、规则名称中不应该包含颜色(red/blue)、定位(left/right)等与具体显示效果相关的信息。应该用意义命名,而不是样式显示结果命名

CSS书写规范

1CSS有些属性是可以缩写的,比如padding,margin,font等等,这样精简代码同时又能提高用户的阅读体验。

2去掉小数点前的“0”

3、简写命名——很多用户都喜欢简写类名,但前提是要让人看懂你的命名。

4、16进制颜色代码缩写——有些颜色代码是可以缩写的,我们就尽量缩写吧,提高用户体验为主。

5、长名称或词组可以使用中横线来为选择器命名。

6、不要随意使用Id——id在JS是唯一的,不能多次使用,而使用class类选择器却可以重复使用,另外id的优先级优先与class,所以id应该按需使用,而不能滥用。

三、常见问题

属性的声明应该按照什么顺序?

四、解决方案

相关的属性声明应该以下面的顺序分组处理:

1、Positioning位置属性(position, top, right, z-index, display, float等)

2、Box model盒模型 (width,height,padding,margin)

3、Typographic排版(font,line-height,letter-spacing,color,text-align等)

4、Visual外观(background,border等)

Positioning处在第一位,因为他可以使一个元素脱离正常文本流,并且覆盖盒模型相关的样式。盒模型紧跟其后,因为他决定了一个组件的大小和位置。

其他属性只在组件内部起作用或者不会对前面两种情况的结果产生影响,所以他们排在后面。

五、编码实战

六、扩展思考

问题:下面四种写法哪个渲染速度最快?

#test .test{}

ul.test{}

#test ul{}

.test{}

“如果单纯的ul与.test PK,我还真拿不定谁的渲染速度更快些。但是,一旦牵扯到层级与标签,我100%确定,.test这种最直接的命名方式渲染效率是最高的。”

“CSS的渲染方式是“从右往左”渲染的,就拿#test ul{}举例,先渲染页面上所有的ul标签,再去寻找id为test的元素。因此上面这个问题,先渲染页面上所有的div,再去寻找其老爸有没有id为test的元素。"

所以,CSS命名,只要出现了层级,出现了标签,就是一次额外的渲染,层级越多,渲染的开销也就越大,这就是为什么一些前辈的文章会建议要尽量避免过深的层级。

七、更多讨论

讨论点一:在上面的问题中,如果是使用JavaScript获取DOM元素,那么哪种写法速度最快?

讨论点二:css命名在什么情况下必须用到层级?

讨论点三:如何减少css的声明?

八、参考文献

参考三:编码规范

html5class命名规范,开发过程中应该遵守哪些编码规范和class命名规范?相关推荐

  1. 开发过程中应该遵守哪些编码规范和class命名规范?

    这里是修真院前端小课堂,每篇分享文从[背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献]八个方面深度解析前端知识/技能. 本篇分享的是:开发过程中应该遵守哪 ...

  2. 那些开发过程中需要遵守的开发规范

    入职公司三天,没干啥其他活,基本在配置本地环境和阅读相关文档.技术方面公司基本用的是主流的技术体系,入职后需要先阅读阿里的开发规范和其他的一些产研文档.今天整理一些平时需要关注的阿里规约和数据库开发规 ...

  3. java开发过程中的命名规范

    为什么80%的码农都做不了架构师?>>>    最近在读项目的过程中,发现好多同事的代码并不是很规范,有的包名也按照了驼峰的写法,虽说这样不是不行,但个人认为开发过程中应该遵守这些规 ...

  4. 在安卓应用开发过程中减小安卓应用大小的 9 种方法

    随着越来越多的数字化,我们对日常使用的移动和移动应用程序的要求也越来越高.移动存储空间的增加提高到256 GB,随着我们满足客户需求,添加新功能并支持不同屏幕尺寸的应用程序,这肯定会增加. 根据该报告 ...

  5. Android开发过程中的部分经验总结

    该文章为Android App 开发过程中遇到的常见问题总结,该总结也会持续不断的优化 完善当中.后续开发中一定会遇到各种各样的问题, 这些问题会酌情不断补充进来. 我将遇到的问题分为两大类,非技术问 ...

  6. 软件项目开发过程中主要遇到的核心问题小结

    最近在北京组织管理某银行的现金管理系统项目的开发,对软件项目开发过程中遇到的问题进行一些心得体会小结,怕时间长了没及时写下来时间久了被遗忘了,现在趁项目还在开发过程,把体会相对深刻时,感受到的一些问题 ...

  7. 微服务开发过程中需要注意的若干事项

    微服务,说比做容易!我们更关注怎样将这种架构设计思想融入到实际工作中,微服务更关注各服务之间的调用.管理,它追求软件研发过程中的自动化,例如:自动编译.打包.发布,自动化运维等等,这里的每一个自动化的 ...

  8. net开发过程中,错误集锦

    2007年 6月 移动项目: 1:vs2005上安装vss2005后,不能够显示源代码管理 (http://www.cnblogs.com/SGSoft/archive/2007/06/12/7803 ...

  9. .net开发过程中,错误集锦

    2007年7月10日 开发过程中,错误集锦. 写这个东东的目的,主要是上班那不能够上网,回家后总结出来弄到日志本里面的.顺便鄙视下移动,对厂家这么刻薄,不能上网,不能带水进去喝,最气人的是,进出大楼, ...

最新文章

  1. 奥比中光Astra深度传感器工作原理
  2. 华为备忘录导入印记云笔记_原来华为手机自带会议神器,开会不用手写,这个功能就能搞定...
  3. 程序员的工作,四种情景的处理
  4. Linux 下重新编译Windows下生成的Qt工程
  5. 自定义构建基于.net core 的基础镜像
  6. linux软件安装非系统盘,linux操作系统可不可以像安装windows软件一样在windows系统下的硬盘上安装...
  7. UVA 11825 状态压缩DP+子集思想
  8. 普通小白学会Python到底具体能做什么呢?
  9. 左侧固定右侧自动填充_ai怎么填充颜色?在ai里怎么填充颜色?
  10. gson读取json字符串_Java:JSON(Gson)从JSON字符串获取值
  11. 关于TP中的M()方法与D()方法
  12. 老程序员提给后浪程序员的职涯建议
  13. FFmpeg学习(5)——视频加水印
  14. 服务器操作系统使用相关要求,服务器操作系统使用相关要求
  15. HTML5+CSS3的速查手册
  16. Debain查看ip地址
  17. thinkphp的column()函数
  18. 交互电子白板有哪些特点?电子白板功能介绍
  19. 运行DreamweaverCS6(绿色破解免)时,没有找到mfc100u.dll!
  20. android activity切换动画关闭,Activity取消界面切换的默认动画方法(推荐)

热门文章

  1. 棋牌游戏需要什么服务器
  2. AT1219 [JOI2013]歴史の研究
  3. 创意自画像及简单交互
  4. 你的计划为什么执行不下去 怎么破
  5. [工作交接]--如何优雅地交接工作
  6. 0基础怎么学游戏建模?
  7. win32俄罗斯方块c++语言 vs2012源代码,C++实现俄罗斯方块
  8. Datawhale的docker学习之旅
  9. 主题 10:如何将工作中的创新点转化为专利
  10. MOVICS系列教程(三) RUN Module