覆盖LESS变量

时间:2013-03-15 06:38:19

标签: symfony twitter-bootstrap less lessphp

我有以下堆栈:

  1. Symfony2的
  2. 安装了lessphp过滤器的Twig。
  3. Twitter Boostrap
  4. 在base.css中我有:

    // base.less
    @import '/path/to/bootstrap.less'
    @linkColor: 13px;
    

    变量名称根本不重要。它可以是bootstrap中使用的任何其他变量。它只是没有被覆盖。但是,如果我将变量放入单独的.less文件并将其导入base.less,一切都按预期工作:

    // base.less
    @import '/path/to/bootstrap.less'
    @import '/path/to/variables.less'
    

    // variables.less
    @linkColor: 13px;
    

    为什么这样做而另一个没有?查找文档(less / lessphp)但找不到与此相关的任何内容。 (或者我不知道在哪里看。)

    有人可以解释为什么会这样吗?

2 个答案:

答案 0 :(得分:7)

看起来这是lessphp编译器中的一个错误。看看github issue。您的解决方法,将变量声明放入另一个文件并导入它可以正常工作。谢谢你的方式;)

答案 1 :(得分:2)

这种情况正在发生,因为您在>之后覆盖变量,它已用于定义所有Bootstrap样式。

我用这种方式解决了这个问题:

  1. 创建我自己的main.less,导入我自己的bootstrap.less
  2. 我自己的bootstrap.less只是将Bootstrap的bootstrap.less文件复制到我自己的文件夹中,导入路径也相应更改,但有一个例外:它由自己的variables.less而不是Bootstrap导入之一。
  3. 我自己的variables.less导入Bootstrap的variables.less,然后覆盖我需要的那些。