And*_*aus 16 css coding-style sass less
每个人都开始使用CSS包含所有样式的单个文件.
style.css很快它变得笨重,并决定按页面元素将CSS分组到多个文件中:
html_elements.cssheader.cssmain-area.cssfooter.css有些人可能会发现这不够方便,并按功能分组样式:
typography.csslayout.csssticky-footer.css (包含许多元素的声明,不包含页脚)当项目有很多CSS时,可能需要同时使用两个分组.CSS文件结构变为二维:
layout/
grid-system.cssheader.csssidebars.csslook/
typography/
main.cssheaders.csslists.cssbackgrounds/
html_elements.cssheader.cssmain-area.cssfooter.css好的,这个例子是捏造的,但你确实理解我的意思.
到目前为止,一切都很好.
这是我的CSS结构变得有趣的地方.
除了上面描述的2D结构之外,我还必须通过媒体查询来构建我的代码:
我试图通过在现有CSS文件中分散媒体查询样式来克服这个问题.该断点指南针扩展有很大帮助,但样式表变得太乱.在文件结构中没有描绘某种风格时会发现很多痛苦.
我尝试通过媒体查询进行分组,然后按元素和函数进行分组.但是文件结构是二维的,因此无法添加新维度,只能添加另一级别的层次结构.所以,它并不优雅.而且,它非常笨重.
所以我最终得到了一个2D结构,在一个轴上有媒体查询,在另一个轴上有一个丑陋的元素和函数组合.
我对此完全不满意,但我没有想出一个优雅的解决方案.请建议一个.
Mir*_*nne 19
CSS已经是一种结构化语言.无论好坏,代码的顺序都会改变它的含义.因此,任何CSS组织方案都必须主要由级联决定.CSS的另一个结构方面是语义.使用它对您有利.组织的关注是保持事物的意义和可维护性.你能保持意义的最好方法就是表现出关系.关系已经由语义表达.
把这些东西放在一起,你最终得到的组织首先是特异性,然后是语义,但绝不是外部概念,如类型与布局或屏幕大小.这是我的命名方案:
base/
- Sass imports and settings - no CSS output.
- e.g _grid, _colors, _rhythm, etc.
general/
- Initial CSS baseline with resets, defaults, font imports, and classes to extend.
- e.g. _reset, _root, _fonts, _icons, _defaults, etc.
layout/
- The rough outline of the site structure.
- Not "layout" as a set of properties excluding type, "layout" as the overall site template which might well include typography.
- e.g. _banner, _nav, _main, _contentinfo, etc.
modules/
- All the details. First by effect (classes/general), then by widget (ids/specifics).
- e.g. _users, _admin, _product-lists etc.
Run Code Online (Sandbox Code Playgroud)
媒体查询应尽可能地与他们影响的代码保持一致.如果可能,它们直接进入内联(使用Sass媒体冒泡).如果它变得笨重,它们移动到块外,但从不在局部之外.MQ是最重要的.当您覆盖代码时,尤其重要的是您能够确切地看到被覆盖的内容.
在某些网站上,您可以采用更远的结构.我偶尔会在最后添加两个文件夹:plugins/管理第三方代码,并overrides/处理不可避免的(试图避免它们!)特定于位置的覆盖到窗口小部件.我也更深入了,fonts/为每个字体系列添加了一个包含partials 的文件夹,或者users/添加,编辑,查看等部分文件夹.具体内容很灵活,但基本组织保持不变: