且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SASS全局变量未传递给局部变量

更新时间:2023-02-22 18:00:37

您不能使用//=require来包含诸如混入和变量之类的动态" SASS内容,因为它仅用于包含最静态"的内容(像纯CSS).您必须@import application.css.sass中的所有文件. Railscasts在 episode#268 中提供了很好的解释./p>

Basically I have a structure that used to work perfectly in 3.0.x and now it breaks with undefined variable errors.

  • partials
    • _base.css.sass
    • _header.css.sass
  • main.css.sass
  • application.css.sass

the application.css.sass:

//=require 'main'

the main.css.sass:

@import 'partials/base'
@import 'partials/header'

Pretty simple stuff.

I get an error on _header.css.sass because it uses a variable defined on _base.css.sass

I didn't have this error before, and it makes no sense to me, since we're importing those variables on the _base.css.sass in the same context we are importing the _header.css.sass.

Am I going to have to import the _base.css.sass on every partial too? What is the point of the main.css.sass requiring global variables if they cannot be used in the own partials you are requiring?

If my structure is completely wrong, please give me an alternative, I'd love suggestions.

You can't use //=require to include "dynamic" SASS stuff like mixins and variables, because that's used just for including the most "static" stuff (like pure CSS). You have to @import all your files in application.css.sass. Railscasts provides good explanation of this in episode #268.