12

介绍:

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

我使用 dotless 进行服务器端处理(我不想使用客户端处理,尤其是在发布完整项目之后)。

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

在这种情况下,Less 感觉非常强大,因为设计了一个参数化的 css,并且在每个主题的文件开头只更改了 10 个变量,这确实令人振奋。

问题:

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

想法:

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

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

我没有机会尝试第二种解决方案,但我认为这是就最可靠的方法寻求建议的好时机。

问题又是:我想从外部控制我的 less 文件中的一些东西。

4

2 回答 2

24

是的,您可以(因为我正是出于这个原因实现了该功能)。

Dotless 通过查询字符串参数支持来自外部的参数。

<link rel="stylesheet" href="style.less?foo=bar" />

会让你少用以下:

@foo = bar;

参数注入代码非常简单。它只是将变量声明添加到您的普通 less 文件中,因此任何作为查询字符串参数出现的内容都将遵循上述语法。

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

于 2012-02-12T20:48:41.807 回答
5

AFAIK,您不能传递用于 dotnetless 的参数来进行编译。

作为一个建议,为什么不直接调用不同的 less 文件呢?使用 Viewbag 属性可以很容易地做到这一点。

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

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

我刚刚在 MVC3 项目上对此进行了测试,它可以工作。

于 2012-02-12T17:06:24.113 回答