Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 在Rails 3中导入较少的变量_Css_Ruby On Rails 3_Asset Pipeline_Less - Fatal编程技术网

Css 在Rails 3中导入较少的变量

Css 在Rails 3中导入较少的变量,css,ruby-on-rails-3,asset-pipeline,less,Css,Ruby On Rails 3,Asset Pipeline,Less,我的资产文件夹中有一个global.less文件,我在其中定义了许多站点范围的变量 为了在其他较少的文件中使用这些变量,我目前将其放在每个文件的顶部: @import 'global'; 这加载一切都很好,但现在我有一个副本的全局加载到每一个更少的文件。我想知道是否有办法在项目中只编写一次导入,让其他较少的文件能够访问它?要实现这一点,您只需要做两件小事 将application.css文件重命名为application.less或application.css.less,使其成为.less文

我的资产文件夹中有一个global.less文件,我在其中定义了许多站点范围的变量

为了在其他较少的文件中使用这些变量,我目前将其放在每个文件的顶部:

@import 'global';

这加载一切都很好,但现在我有一个副本的全局加载到每一个更少的文件。我想知道是否有办法在项目中只编写一次导入,让其他较少的文件能够访问它?

要实现这一点,您只需要做两件小事

  • application.css
    文件重命名为
    application.less
    application.css.less
    ,使其成为.less文件

  • 删除
    require\u树。
    sprocket指令,该指令将自己导入样式表目录中的文件,从而删除定义顺序的功能

  • 一旦完成这些工作,它应该按照您的预期工作,简单地说:

    // in global.less
    @foo: #FFFFFF;
    
    // in foo.less
    .foo {
      background-color: @foo;
    }
    
    // and finally in application.less
    @import 'global';
    @import 'foo';
    

    但我发现这种做法存在一个问题。很多时候,我们需要使用“需要树”和“需要自我”。在本例中,这些方法将不可用,因为您使用了.sass文件而不是.css文件。然后需要在每个操作样式表中创建一个“@import”。否。这里的要点是,这种方法抛弃了
    require_tree
    ,而支持less自己的
    @import
    功能,它创建了一个全局名称空间,使mixin和变量保持可用,而sprockets的
    require
    则不需要。请注意,此问题适用于less,而不是您提到的sass,但相同的原则适用于两者。请参阅关于sass的github上的问题。