说明:
我正在asp.net mvc环境中尝试LESS。
我使用dotless进行服务器端处理(我不想使用客户端处理,特别是在发布完整项目时)。
我必须根据不同的事物(例如一天中的时间)应用不同配色方案的设计。
在这种情况下感觉不那么强大,因为设计一个参数化的CSS并且只在每个主题的文件开头改变10个变量真的令人振奋。
问题:
但我需要以某种方式从外部参数更改颜色主题。
思路:
首先我认为像style.less?theme = fuschia这样的URL参数会很好,但我发现无法解析这样的事情。
然后我认为制作一个非常短的blue.less,green.less,orange.less只包含声明的颜色变量,并且在每个变量中都包含main.less将是一个可靠的解决方案。
我没有机会尝试第二种解决方案,但我认为这是一个以最强有力的方式征求意见的好时机。
问题又出现了:我想从外面控制我文件中的一些东西。
答案 0 :(得分:23)
是的,你可以(因为我出于这个原因实现了这个功能)。
Dotless通过querystring参数支持来自外部的参数。
<link rel="stylesheet" href="style.less?foo=bar" />
让您使用以下内容:
@foo = bar;
参数注入代码非常简单。它只是将变量声明预先设置为普通的较少文件,因此作为查询字符串参数的任何内容都将遵循上述语法。
有问题的代码非常简单:https://github.com/dotless/dotless/blob/master/src/dotless.Core/Engine/ParameterDecorator.cs
答案 1 :(得分:5)
AFAIK,你不能传递dotnetless的参数来进行编译。
作为一个建议,为什么不只是调用不同的文件?使用Viewbag属性可以很容易地做到这一点。
要制作不同的较少的文件,首先要创建一个包含每组颜色的较少文件。然后导入基本css文件。 dotnetless会将父文件中的颜色定义与基本文件中的用法合并。所以你有类似的东西 -
@baseGray: #ddd;
@baseGrayDark: darken(@baseGray, 15%);
@baseGrayLight: lighten(@baseGray, 10%);
@import "baseCss.less";
我刚刚测试了这个和MVC3项目并且它可以工作。