当我为客户设计网站时,通常会使用一个(或多个)CSS文件来构建整个演示层。问题是,通常情况下,客户的需求在“网站主题”方面发生了很大变化。他可能会要求根据自己的口味从蓝/绿色主题更改为红/橙色主题。问题是,我的文件包含所有信息,包括:
- 元素的定位
- 容器的背景图像
- 字体大小、颜色
如何“解耦”CSS文件以使其“主题”感知,同时保留所有有关定位的信息?
我的可能实践列表如下:
- 使用包含通用信息和定位的默认CSS文件,使用子CSS文件仅实现背景图像、字体大小和颜色
- 命名您的第一个CSS文件(假设这里的蓝/绿色文件将被命名为“sky”)。基于sky实现另一个主题,覆盖任何需要更改主题的CSS属性,并将其命名(例如,红/橙色将命名为“crimson”)。
编辑:根据下面提供的出色答案,我更新了其他可能解决方案的列表,添加到我的列表中:
- 使用SASS(最好与Compass一起编写,参见Andrew Vit),特别是其中的"Mixins"功能。它采用了非常DRY的程序化方法来处理CSS。您可以使用它覆盖现有类。- treefrog
- 采用OOCSS方法。- Andrew Vit
- 一种称为independent blocks(俄文文章)的技术,利用类前缀模仿名称空间,以分隔特定块。- angryobject
- 三个基于样式表。将排版、位置和Eric Meyer提供的重置样式表分离出来。- David Thomas
- 使用已经被知名组织采用的标准化方法,例如Dojo库、jQuery UI等。
- S. Jones
在可能的情况下哪种更好?还有其他易于维护和灵活的方式吗?
迄今为止最佳答案:使用SASS制作非常灵活的样式表。当然,这意味着需要学习曲线,但根据一些评论,SASS似乎是动态样式表的下一个选择(以及HAML)。