零维
每个人都从一个包含所有样式的文件开始使用 CSS。
style.css
一维
很快它就变得庞大了,人们决定按页面元素将 CSS 分组到多个文件中:
html_elements.css
header.css
main-area.css
footer.css
有些人可能会觉得这不够方便,并按功能对样式进行分组:
typography.css
layout.css
sticky-footer.css
(包含许多元素的声明,而不仅仅是页脚)
二维
当一个项目有很多 CSS 时,它可能需要同时使用这两个分组。CSS 文件结构变成二维的:
layout/
grid-system.css
header.css
sidebars.css
look/
typography/
main.css
headers.css
lists.css
backgrounds/
html_elements.css
header.css
main-area.css
footer.css
好吧,这个例子是捏造的,但你确实明白我的意思。
到目前为止,一切都很好。
输入媒体查询
这就是我的 CSS 结构被搞砸的地方。
除了上面描述的 2D 结构之外,我还必须通过媒体查询来构建我的代码:
- 我的一些风格是通用的(适用于任何地方)
- 有些仅适用于某些屏幕尺寸:
- 小的;
- 中等的;
- 大的;
- 特大。
- 有些适用于某些屏幕尺寸组:
- 除了小型(非移动样式)之外的所有东西;
- 小型和中型(侧边栏不在两侧)
- large 和 xlarge(你有侧边栏的地方)
我试图通过在现有 CSS 文件中分散媒体查询样式来解决这个问题。断点Compass 扩展有很大帮助,但是样式表变得太乱了。当文件中没有描绘出某种风格时,它会带来很多痛苦。
我尝试按媒体查询分组,然后按元素和功能分组。但是文件结构是二维的,所以你不能添加新的维度,你只能添加另一个层次结构。所以,并不优雅。此外,它非常笨重。
所以我最终得到了一个二维结构,一个轴上有媒体查询,另一个轴上有元素和功能的丑陋组合。
我对此绝对不满意,但我只是未能提出一个优雅的解决方案。请推荐一个。