我可以在LESS css中使用url参数吗?

Soo*_*ead 12 asp.net-mvc less dotless

介绍:

我在asp.net mvc环境中尝试LESS.

我使用dotless进行服务器端处理(我不想使用客户端处理,尤其是发布整个项目).

我必须根据不同的事物(例如一天中的时间)应用不同颜色方案的设计.

在这种情况下感觉不那么强大,因为设计一个参数化的css并且只在每个主题的文件开头改变10个变量真的令人振奋.

问题:

但我需要以某种方式从外部参数更改颜色主题.

思路:

首先我认为像style.less?theme = fuschia这样的URL参数会很好,但我发现无法解析这样的东西.

然后我认为制作一个非常短的blue.less,green.less,orange.less只包含声明的颜色变量,并且在每个变量中都包含main.less将是一个可靠的解决方案.

我没有机会尝试第二种解决方案,但我认为这是一个很好的时机,可以就最强大的方式寻求建议.

问题又出现了:我想从外面控制我文件中的一些东西.

Tig*_*ine 24

是的,你可以(因为我出于这个原因实现了这个功能).

Dotless通过querystring参数支持来自外部的参数.

<link rel="stylesheet" href="style.less?foo=bar" />
Run Code Online (Sandbox Code Playgroud)

会让你使用以下内容:

@foo = bar;
Run Code Online (Sandbox Code Playgroud)

参数注入代码非常简单.它只是将变量声明预先设置为普通的较少文件,因此任何作为查询字符串参数的内容都将遵循上述语法.

有问题的代码非常简单:https://github.com/dotless/dotless/blob/master/src/dotless.Core/Engine/ParameterDecorator.cs


pho*_*tom 5

AFAIK,你不能传递dotnetless的参数来进行编译.

作为一个建议,为什么不只是调用不同的文件?使用Viewbag属性可以很容易地做到这一点.

要制作不同的较少的文件,首先要创建一个包含每组颜色的较少文件.然后导入基本css文件.dotnetless会将父文件中的颜色定义与基本文件中的用法合并.所以你有类似的东西 -

@baseGray: #ddd;
@baseGrayDark: darken(@baseGray, 15%);
@baseGrayLight: lighten(@baseGray, 10%);
@import "baseCss.less";
Run Code Online (Sandbox Code Playgroud)

我刚刚测试了这个和MVC3项目,它的工作原理.