覆盖LESS变量是不好的做法吗?

时间:2012-10-17 06:16:30

标签: less

我目前正在项目中使用Twitter Bootstrap,包括LESS文件,并使用我们编写的一些额外的LESS代码进行编译。

最新版本意味着我们需要覆盖一些Bootstrap LESS变量。这里的一个选择是维护我们在每个版本上修补的Bootstrap的修改副本。

但我注意到,通过在导入语句之后重新声明变量,可以覆盖@import LESS文件中定义的变量。

E.g:

@import "twitter-bootstrap/bootstrap.less";
// Restore base font size to pre 2.1.1 defaults
@baseFontSize:          13px;
// Add some custom LESS code here

这是不好的做法吗?它是LESS编译器工作方式的工件,还是它的预期部分?我找不到很多关于此的信息,虽然我确实找到了以下两个参考文献:

  

由于Less编译器中存在错误,您可以在最初声明变量后通过更改它来覆盖变量的“常量”值。

     

http://rubysource.com/how-to-customize-twitter-bootstrap%E2%80%99s-design-in-a-rails-app

  

通过覆盖这三个变量来自定义列和装订线(在声明grid.less导入之后)。

     

http://semantic.gs/

LESS网站本身说变量是'常数':

http://lesscss.org/

  

请注意,LESS中的变量实际上是“常量”,因为它们只能定义一次。

但后来我看到其他网站使用这种方法..它肯定比维护供应商分支更容易,并且似乎与less.js一起工作。

对于这是否是一件糟糕的事情,我们不胜感激!

2 个答案:

答案 0 :(得分:45)

确定!上述问题之一引发了对预期行为的讨论,结果表明重写LESS变量很好。

  

您的声明将在CSS中的相同范围内相互覆盖; LESS也是如此。

     

https://github.com/cloudhead/less.js/issues/297

与CSS一样,在范围内覆盖是使用LESS的预期方式。

答案 1 :(得分:6)

没关系!

我通常使用“components”创建一个less文件,使用默认值创建变量。然后我导入一个具有相同变量但是“customers”值的文件,覆盖默认值。通过这种方式,我只需更改一些值即可为每位客户创建新设计。

没关系,非常实用。