书写整洁优雅的CSS3代码

CSS3已经开始被大家广泛的运用到产品中的页面代码中去,CSS3带来的革新式的变化我在这里就不一一细说了。不过因为目前的CSS3还处在草案阶段,所以绝大部分的浏览器(除了opera应该是)都是使用的私有属性的方式来实现对CSS3的支持。比如firefox的-moz-前缀和webkit核心浏览器的-webkit-前缀等。

整洁优雅的代码能提高生产效率,特别是在团队合作中。我想很多人都习惯把css代码写成一行的形式,诸如这样:

.main{width:960px;margin:0 auto;}
.sidebar{width:233px;float:left;}
.sidebar ul li{float:left}

采用这样的一行形式,能让你们整齐的排列相似父辈继承的样式,让他们很简单的能被查找到。当然为了更好的查找到代码,你们可能还需要一个注释。

/*
something u want to say --------------------------------------------------*/
.main{width:960px;margin:0 auto;}
.sidebar{width:233px;float:left;}
.sidebar ul li{float:left}


然后这时候我们想给sidebar加一个5像素的圆角,于是

/*
sidebar border-radius {3px} --------------------------------------------------*/
.main{width:960px;margin:0 auto;}
.sidebar{width:233px;float:left;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;}
.sidebar ul li{float:left}

这样你可能还不会觉得有什么,因为只是加了border-radius,如果我们继续加个box-shadow呢?

/*
sidebar border-radius {3px} --------------------------------------------------*/
.main{width:960px;margin:0 auto;}
.sidebar{width:233px;float:left;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;box-shadow:1px 1px 5px #rgba(0,0,0,0.1);-moz-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);-webkit-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);}
.sidebar ul li{float:left}

是不是看起来挺崩溃的,这不是坑爹么…sidebar的样式看起来糊成一团了,这些css3代码和普通的css代码混在一起十分难受…

于是这样同样有代码洁癖的老外童鞋给出了一种他的解决方案,请看

/*
sidebar border-radius {3px} --------------------------------------------------*/
.main{width:960px;margin:0 auto;}
.sidebar{width:233px;float:left;
	border-radius:3px;
	-moz-border-radius:3px;
	-webkit-border-radius:3px;
	box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
	-moz-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
	-webkit-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
}
.sidebar ul li{float:left}

这样来区分开css3代码是不是整洁多了!

引申话题,该同学blog底部还就css3的样式顺序发表了观点,到底是私有属性-moz-border-radius放前面还是标准的border-radius放前面,这里有一篇来自CSS3-TRICKS的《Ordering CSS3 Properties》阐述了为什么私有属性要放在标准的前面,把标准的放在最底下。

那么最终的代码就是这个样子的

/*
sidebar border-radius {3px} --------------------------------------------------*/
.main{width:960px;margin:0 auto;}
.sidebar{width:233px;float:left;
	-moz-border-radius:3px;
	-webkit-border-radius:3px;
	border-radius:3px;
	-moz-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
	-webkit-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
	box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
}
.sidebar ul li{float:left}

不知道大家有没有什么不同的代码书写风格,希望能在评论中得到不同的见地。

PS:为什么我不喜欢把每个样式都单独分成一行?因为…我觉得这样的代码可读性真是太差了,试想,一个类样式占了10多行…

  • guanxin8977

    坑爹了!

  • chone

    为什么不选择对css源文件进行压缩再发布呢?
    可以关注下 yui compressor

    • @chone …明显你会错意思了,发布是发布,这个是开发时候写的代码

    • chone

      @Leeiio

      源代码我使用每个属性一行

  • 我的习惯是一行一个属性,css2 和 css3一视同仁

    ps. 似有 -》 私有

  • 好文,我现在是CSS3的另起一行,内容合并,没额外缩进。CSS3属性多了的话依旧挺乱的。

  • Sam

    我接受不了把全部写在一行,一定要分行写,不然我会吐血的。。:(

    • @Sam 每个样式分一行我也尝试过,现在放弃了

    • @Sam sam啊,我觉得分行写看起来更让我吐血,特别是样式多起来的时候,查找一个属性都要翻几行。

  • ~_~都是看着手册复制的~~

  • Pingback: Tweets that mention 书写整洁优雅的CSS3代码 - Leeiio Chaos Made. -- Topsy.com()

  • 我一般是这样排的,高宽相关在同一行,边框相关在同一行,内容相关在同一行,定位相关在同一行,css3里的同一功能不同浏览器的在同一行,我觉得这样比较便于查找

  • =.= 每个属性一行,懒得区分 是不是 CSS3 了、、

  • Jenux

    我会这样:
    .sidebar{ width:233px; float:left;
    -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px;
    -moz-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
    -webkit-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
    box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
    }
    属性之间空格隔开。
    一行太长的话,进行分组分行
    相近的只要不是太长就写在一行

  • 我习惯一行一行来,看起来比较清晰,好维护。

  • gsid

    我也来找个错别字“于是这样同样…” ➡ “这位同样” :mrgreen:
    我现在基本就按照推荐的方法写

  • Way

    学习了!很好的方法!

  • 一条属性一行。
    这样我感觉我在找属性时比较方便。

    滚动条用得少,直接用firebug看line num,然后VIM直接 :line num

  • lingzuer

    #el {
    border: 1px solid red;
    }
    我要严格按照这种风格写,不然看着很不清爽。
    至于滚动条,我想可以分为好几个文件写,
    打包的时候合并文件就好了。

  • lingzuer

    border属性前有个tab缩进的。

  • 我是每个属性一行来写,因为我使用的DW,所以写得差不多的时候使用DW的“命令 – 应用源格式”,就能把代码都自动调整为一行的。之后再要修改,靠Firebug读行号,也不麻烦。

  • 🙂 这样的书写方式确实很棒!

  • 每个属性一行
    并且依照 Alphabetical 做排序(好处是不会重复、团队开发容易遵循)

    滚动条的问题…
    一个 CSS 文档是一个 DIV 模块,所以通常不会超过 100 行、还可以接受
    另外就算不是一个 CSS 一个文档,编辑器也可以设定适当的收摺。

    • @josephj 模块化来分割css文件确实是有必要的,但是对于css的属性顺序采用 Alphabetical 其实我觉得不太好,这个只是解决了查看的问题,Mozilla不是有个书写顺序么,我觉得按那个来不错,形象符合浏览器的渲染过程

  • 我是把css3这些私有的扔到一起……

  • 主题也太牛了吧,边栏也能关闭,^_^

  • 我一直觉得应该把私有属性放最后的

  • .main{width:960px;margin:0 auto;}

    像这样多些几个属性就会看得眼花…

    .main
    {
    width:960px;
    margin:0 auto;
    }

    习惯这样了…然后用搜索找~~

  • 我一直觉得这些法不错,但是还是有点复杂,看老外写的都挺简单。

  • 我也一直尝试着使用老外的这种写法,比较规范。

  • 你是一边看我的代码一边写的文章吧?

  • chatry

    我觉得不管怎么写,第一点要保证便于日后维护

  • chatry

    @chatry 博主这个获取用户浏览器和操作系统的功能貌似有问题。。我是chrome11,WIN7系统