前端开发编码规范之CSS

时间:2022-11-19 09:22:47

  "字是门面书是屋",我们不会去手写代码,但是敲出来的代码要好看、有条理,这还必须得有一点约束~

  团队开发中,每个人的编码风格都不尽相同,有时候可能存在很大的差异,为了便于压缩组件对代码进行压缩以及书写样式的规范统一和美观,很有必要大家一起来研究一套基本规范(模板)!

  我先抛砖引玉。(禁止)、(必须)等字眼,在这里只是表示强调,未严格要求。


前端规范之CSS

1. tab键用(必须)四个空格代替

  因为在不同系统的编辑工具对tab解析不一样,windows下的tab键是占四个空格的位置,而在linux下会变成占八个空格的位置(除非你自己设定了tab键所占的位置长度)。

  一些童鞋可能会有疑问,tab键换成四个空格,多麻烦啊~

  其实不然,我平时用sublime text比较多,在这个工具中可以对tab键进行设置。

前端开发编码规范之CSS

09141737-747feb02ee5140f8956f9b70ce9f1aae.png(7.55 KB, 下载次数: 0)

下载附件保存到相册

2013-8-25 17:04 上传

  选择Indent Using Spaces,Tab Width:4两项即可。


2. 每个样式属性后(必须)加 ";"

方便压缩工具"断句"。


3. Class命名中(禁止)出现大写字母,(必须)采用” - “对class中的字母分隔,如:

  1. /* 正确的写法 */

  2. .hotel-title {

  3. font-weight: bold;

  4. }


  5. /* 不推荐的写法 */

  6. .hotelTitle {

  7. font-weight: bold;

  8. }

复制代码
  • 用"-"隔开比使用驼峰是更加清晰。

  • 产品线-产品-模块-子模块,命名的时候也可以使用这种方式(@Artwl)


4. 空格的使用,以下规则(必须)执行:

  1. .hotel-content {

  2. font-weight: bold;

  3. }

复制代码
  • 选择器与 { 之前(必须)要有空格

  • 属性名的 : 后(必须)要有空格

  • 属性名的 : 前(禁止)加空格

一个原因是美观,其次IE 6存在一个bug, 戳bug


5.多选择器规则之间(必须)换行

当样式针对多个选择器时每个选择器占一行

  1. /* 推荐的写法 */

  2. a.btn,

  3. input.btn,

  4. input[type="button"] {

  5. ......

  6. }

复制代码

6. (禁止)将样式写为单行, 如

  1. .hotel-content {margin: 10px; background-color: #efefef;}

复制代码

单行显示不好注释,不好备注,这应该是压缩工具的活儿~


7. (禁止)向 0 后添加单位, 如:

  1. .obj {

  2. left: 0px;

  3. }

复制代码

只是为了统一。记住,绿色字表强调,不表强制!


8. (禁止)使用css原生import

使用css原生import有很多弊端,比如会增加请求数等....


9. (推荐)属性的书写顺序, 举个例子:

  1. .hotel-content {

  2. /* 定位 */

  3. display: block;

  4. position: absolute;

  5. left: 0;

  6. top: 0;

  7. /* 盒模型 */

  8. width: 50px;

  9. height: 50px;

  10. margin: 10px;

  11. border: 1px solid black;

  12. / *其他* /

  13. color: #efefef;

  14. }

复制代码
  • 定位相关, 常见的有:display position left top float 等

  • 盒模型相关, 常见的有:width height margin padding border 等

  • 其他属性

  按照这样的顺序书写可见提升浏览器渲染dom的性能

  简单举个例子,网页中的图片,如果没有设置width和height,在图片载入之前,他所占的空间为0,但是当他加载完毕之后,那块为0的空间突然被撑开了,这样会导致,他下面的元素重新排列和渲染,造成重绘(repaint)和回流(reflow)。我们在写css的时候,把元素的定位放在前头,首先让浏览器知道该元素是在文本流内还是外,具体在页面的哪个部位,接着让浏览器知道他们的宽度和高度,border等这些占用空间的属性,其他的属性都是在这个固定的区域内渲染的,差不多就是这个意思吧~(@frec)



10. 小图片(必须)sprite 合并

推荐文章:NodeJs智能合并CSS精灵图工具iSpriter


11. (推荐)当编写针对特定html结构的样式时,使用元素名 + 类名

  1. /* 所有的nav都是针对ul编写的 */

  2. ul.nav {

  3. ......

  4. }

复制代码

".a div"和".a div.b",为什么后者好?如果需求有所变化,在".a"下有多加了一个div,试问,开始的样式是不是会影响后来的div啊~


12. (推荐)IE Hack List

  1. /* 针对ie的hack */

  2. selector {

  3. property: value; /* 所有浏览器 */

  4. property: value\9; /* 所有IE浏览器 */

  5. property: value\0; /* IE8 */

  6. +property: value; /* IE7 */

  7. _property: value; /* IE6 */

  8. *property: value; /* IE6-7 */

  9. }

复制代码

当使用hack的时候想想能不能用更好的样式代替


13. (不推荐)ie使用filter,( 禁止)使用expression

这里主要是效率问题,应该当格外注意,咱们要少用烧CPU的东西~


14. (禁止)使用行内(inline)样式

<p style="font-size: 12px; color: #FFFFFF">W3Cfuns</p>

像这样的行内样式,最好用一个class代替。又如要隐藏某个元素,可以给他加一个class

  1. .hide {

  2. display: none;

  3. }

复制代码

尽量做到样式和结构分离~


15. (推荐)reset.css样式

推荐网站:http://www.cssreset.com/


16.(禁止)使用"*"来选择元素

  1. /*别这样写*/

  2. * {

  3. margin: 0;

  4. padding: 0;

  5. }

复制代码

这样写是没有必要的,一些元素在浏览器中默认有margin或padding值,但是只是部分元素,没有必要将所有元素的margin、padding值都置为0。


17. 链接的样式,(务必)按照这个顺序来书写

a:link -> a:visited -> a:hover -> a:active


本文出自 “五天零一夜” 博客,请务必保留此出处http://1991390110.blog.51cto.com/6639119/1302298