2012-02-11 39 views
11

简介:我可以在LESS css中使用网址参数吗?

我想在一个asp.net mvc环境中使用较少。

我用带点服务器端处理(我不想使用客户端的处理尤其是AFER发布完整的项目)。

我需要去申请一个设计,其中有根据不同的事物有不同的配色方案(例如一天的时间)。

少在这种情况下作为设计参数CSS和只在文件的开头改变像10个变量对每个主题是真正令人振奋的感觉很强大。

问题:

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

思路:

首先,我认为像style.less主题=褐色的URL参数将是一件好事,但我发现没有办法来分析这样的事情?

后来我想,在他们每个人做一个很短的blue.less,green.less,orange.less只包含声明的颜色变量,包括main.less将是固溶体。

我没有机会尝试第二种方案,但我认为这将是一个很好的时间,以求教于这样做的最可靠的方法。

问题再次出现在:我想从外部控制少量文件。

回答

22

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

Dotless通过查询字符串参数从外部支持参数。

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

会让你用以下数值:

@foo = bar; 

参数注入代码很简单。它只是将变量声明预先添加到普通较少的文件中,因此任何以querystring参数形式出现的内容都将遵循上述语法。

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

+1

这是我期待的答案! :D – SoonDead 2012-02-12 22:05:01

+0

@Tigraine:这是怎么节省的?攻击者可以将恶意代码轻松注入到样式表中。 – jor 2015-06-02 06:54:17

+0

使用这个并不那么简单。我必须在我的行'@import'darkly-variables - @ {theme} .less“;''上面创建'@import'theme-param-default.less”;'',其中包含'@theme:dark;'else there是编译问题。 – 2017-05-18 12:16:45

5

AFAIK,您无法传递dotnetless的参数来进行编译。

作为一个建议,为什么不只是调用不同的少文件?这通过使用Viewbag属性很容易实现。

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

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

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

+0

谢谢,这也是我的东西需要。有些情况下,我会乐意接受多个答案。这是一。 – SoonDead 2012-02-12 22:07:09

相关问题