我正在研究 CSS 最佳实践和方法,如 OOCSS 和 SMACSS,以便在使用 Twitter Boostrap 3 和 LESS 的中等规模项目中使用。我开始掌握这些方法,但我很难找出如何处理响应式设计和 CSS 模块的关系。
例如,假设我有一个按钮模块,其中包含项目中使用的所有不同类型的按钮(颜色、形状、大小)。如何根据设备更改按钮。相同的按钮在移动设备中应该很大,在桌面中应该是正常的。在 OOCSS 之后,我应该有 2 个皮肤类,例如 btn--default 和 btn--large。但由于每个设备的 HTML 都是相同的,我无法在 HTML 中切换此类。此外,在模块的 CSS 中使用媒体查询会根据设备大小更改按钮的大小似乎不是一个好主意,因为我会将模块与这个特定需求结合起来(如果我想要一个普通按钮怎么办?稍后移动?)。
作为另一个示例,我有具有不同可能布局(垂直/水平)的产品部分模块。如果我想在桌面使用垂直布局而在移动设备中使用水平布局怎么办?我面临着完全相同的问题。我可以轻松创建 2 个不同的子模块(product--horiz、product-vert),但我无法更改它们。
我可以使用 javascript 来切换类,但感觉不对,并且会在禁用 JS 的情况下破坏设计。你可以告诉我,如果一个元素从一个设备到另一个设备发生如此大的变化,那么设计可能是不正确的,但限制这种情况将是一个真正的限制。
那么你对这个问题有什么看法。是否有任何普遍的做法来面对它?