我已经编写了一个宏(在 Visual Studio 中),它不仅允许我为命名颜色编写 CSS 代码,还可以轻松计算这些颜色的阴影或混合。它还处理字体。它在保存时触发并输出 CSS 文件的单独版本。这与Bert Bos's argument 一致,即 CSS 中的任何符号处理都发生在创作时,而不是在解释时。
完整的设置以及所有代码可能有点过于复杂,无法在此处发布,但可能适合以后的博客文章。这是宏的注释部分,应该足以开始。
这种方法的目标如下:
允许在中心位置定义基色、字体等,以便无需使用搜索/替换即可轻松调整整个调色板或印刷处理
避免在 IIS 中映射 .CSS 扩展名
生成可供 VisualStudio 的设计模式等使用的各种文本 CSS 文件
在创作时生成这些文件一次,而不是在每次请求 CSS 文件时重新计算它们
立即透明地生成这些文件,无需在调整-保存-测试工作流程中添加额外步骤
使用这种方法,颜色、颜色的深浅和字体系列都用引用 XML 文件中值列表的速记标记表示。
包含颜色和字体定义的 XML 文件必须称为 Constants.xml,并且必须与 CSS 文件位于同一文件夹中。
每当 VisualStudio 保存 CSS 文件时,EnvironmentEvents 都会触发 ProcessCSS 方法。 CSS 文件已展开,文件的展开后静态版本保存在 /css/static/ 文件夹中。 (所有 HTML 页面都应该引用 CSS 文件的 /css/static/ 版本)。
Constants.xml 文件可能如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<cssconstants>
<colors>
<color name="Red" value="BE1E2D" />
<color name="Orange" value="E36F1E" />
...
</colors>
<fonts>
<font name="Text" value="'Segoe UI',Verdana,Arial,Helvetica,Geneva,sans-serif" />
<font name="Serif" value="Georgia,'Times New Roman',Times,serif" />
...
</fonts>
</cssconstants>
在 CSS 文件中,您可以有如下定义:
font-family:[[f:Text]];
background:[[c:Background]];
border-top:1px solid [[c:Red+.5]]; /* 50% white tint of red */