我一直严重依赖CSS的一个网站,我正在工作。现在,所有的CSS样式都是在每个标签的基础上应用的,所以现在我试图将它移动到更多的外部样式,以帮助任何未来的变化。
但现在的问题是,我已经注意到我得到了一个“CSS爆炸”。我很难决定如何在CSS文件中最好地组织和抽象数据。
我在网站中使用了大量的div标签,从一个基于表格的网站。我得到了很多这样的CSS选择器:
div.title {
background-color: blue;
color: white;
text-align: center;
}
div.footer {
/* Styles Here */
}
div.body {
/* Styles Here */
}
/* And many more */
这还不算太糟,但由于我是初学者,我想知道是否可以就如何最好地组织CSS文件的各个部分提出建议。我不想在我的网站上的每个元素都有一个单独的CSS属性,我总是希望CSS文件是相当直观和易于阅读的。
我的最终目标是使它易于使用CSS文件,并证明他们的力量,以提高web开发的速度。这样,将来可能在这个网站上工作的其他人也将开始使用良好的编码实践,而不必像我一样学习。
就像我之前说的:进入OOCSS。Sass/Less/Compass使用起来很诱人,但在正确使用CSS之前,Sass/Less/Compass只会让事情变得更糟。
首先,阅读高效css。尝试谷歌页面速度和阅读Souders关于高效css的文章。
然后进入OOCSS。
学会使用级联。(毕竟,我们称之为级联样式表)。
学习如何获得正确的粒度(自底向上而不是自顶向下)
学习如何分离结构和皮肤(什么是唯一的,这些对象的变化是什么?)
学习如何分离容器和内容。
学会爱上网格。
它将彻底改变css的每一个细节。我完全焕然一新,爱上了它。
更新:SMACSS类似于OOCSS,但一般来说更容易适应。
就像我之前说的:进入OOCSS。Sass/Less/Compass使用起来很诱人,但在正确使用CSS之前,Sass/Less/Compass只会让事情变得更糟。
首先,阅读高效css。尝试谷歌页面速度和阅读Souders关于高效css的文章。
然后进入OOCSS。
学会使用级联。(毕竟,我们称之为级联样式表)。
学习如何获得正确的粒度(自底向上而不是自顶向下)
学习如何分离结构和皮肤(什么是唯一的,这些对象的变化是什么?)
学习如何分离容器和内容。
学会爱上网格。
它将彻底改变css的每一个细节。我完全焕然一新,爱上了它。
更新:SMACSS类似于OOCSS,但一般来说更容易适应。
我发现最难的事情是将网站所需的设计转化为一系列规则。如果站点的设计清晰且基于规则,那么你的类名和CSS结构就可以由此而来。但是,如果人们随着时间的推移,随机地在网站上添加一些没有多大意义的内容,那么在CSS中就没有太多办法了。
我倾向于这样组织我的CSS文件:
CSS reset, based on Eric Meyer’s. (Because otherwise I find that, for most elements, I’ve got at least one or two rules that are just resetting default browser styles — most of my lists don’t look like the default HTML style for lists, for example.)
Grid system CSS, if the site calls for it. (I base mine on 960.gs)
Styles for components that appear on every page (headers, footers, etc)
Styles for components that are used in various places across the site
Styles that are only relevant on individual pages
如你所见,这主要取决于网站的设计。如果设计清晰有条理,你的CSS也可以做到。如果不是,你就完蛋了。
我所见过的对抗CSS膨胀的最好方法是使用面向对象的CSS原则。
甚至还有一个非常好的OOCSS框架。
一些意识形态与上面的答案相悖,但一旦你知道如何以面向对象的方式构建CSS,你就会发现它实际上有助于保持代码的精简和平均。
这里的关键是在你的网站中识别“对象”或构建块模式,并使用它们进行架构。
Facebook聘请了OOCSS的创建者Nicole Sullivan,以节省大量的前端代码(HTML / CSS)。是的,你实际上可以得到节省,不仅在你的CSS,但在你的HTML太,这是由它的声音,是非常有可能为你,因为你提到转换一个基于表格的布局到很多div的
另一个很好的方法在某些方面与OOCSS类似,就是从一开始就计划和编写可伸缩和模块化的CSS。Jonathan Snook写了一本关于SMACSS的书/电子书——CSS的可伸缩和模块化架构
让我给你介绍一些链接:
海量CSS的5个错误-(视频)
海量CSS的5个错误(幻灯片)
CSS膨胀-(幻灯片)