【发布时间】:2011-04-09 09:46:38
【问题描述】:
当我为客户设计网站时,我经常使用一个(或多个)构成整个表示层的 CSS 文件来设计他的网站。问题是,通常,客户的需求在“网站主题”方面发生了巨大变化。他可能最终会要求根据自己的口味从基于蓝色/绿色的主题更改为基于红色/橙色的主题。问题是,我的文件包含所有信息,包括:
- 元素的定位
- 容器的背景图片
- 字体大小、颜色
将 CSS 文件“解耦”以使其具有“主题”意识,同时保留其所有定位信息的最佳做法是什么?
我的可能做法列表如下:
- 使用包含通用信息和定位的默认 CSS 文件,使用仅实现背景图像、字体大小和颜色的子 CSS 文件
- 为您的第一个 CSS 文件命名(比如这里的蓝色/绿色文件将命名为“sky”)。实现另一个基于天空的主题,覆盖更改主题所需的任何 CSS 属性并为其命名(例如,红色/橙色将是“深红色”)。
编辑:根据下面提供的出色答案,我更新了添加到我的列表中的其他可能解决方案的列表:
- 使用SASS,(最好使用Compass @see Andrew Vit 编写)特别是他们的“混合”功能。它采用 CSS 并引入了一种非常 DRY 的编程方法。您可以用它覆盖现有的类。 -treefrog
- 使用OOCSS 方法。 -Andrew Vit
- 一种称为independent blocks(俄语文章)的技术,它模仿一种使用类前缀来分隔特定块的命名空间。 -angryobject
- 基于三个样式表。分隔排版、位置和Eric Meyer 提供的重置样式表。 -David Thomas
- 使用已知组织使用的已经标准化的方法,例如 Dojo 库、jQuery UI 等。
-S .Jones
在哪种情况下哪个会更好?还有其他易于维护且灵活的方式吗?
迄今为止的最佳答案:使用 SASS 制作非常灵活的样式表。当然,这意味着学习曲线会很短,但根据一些评论,SASS 似乎是动态样式表的下一个方法(以及HAML)。
【问题讨论】:
-
现在使用 SCSS 变得更加容易,几乎没有学习曲线。剩下的就是学习优秀的指南针框架
标签: css