Compiler construction 较少的变量未通过导入获取

Compiler construction 较少的变量未通过导入获取,compiler-construction,import,less,Compiler Construction,Import,Less,我在主.less文件中有以下内容: @media only screen and (min-width: 47.0625em) { @import "_grid.less"; @import "_768up.less"; } @media only screen and (min-device-width: 47.0625em) and (max-device-width: 64.375em) { @import "_768to1030.less"; } 在\u

我在主.less文件中有以下内容:

@media only screen and (min-width: 47.0625em) {
    @import "_grid.less";
    @import "_768up.less";
} 

@media only screen 
and (min-device-width: 47.0625em) 
and (max-device-width: 64.375em) {
    @import "_768to1030.less";
}
\u grid.less
中有一个变量集,它在
\u 768up.less
\u 768to1030.less中都使用,但是当导入位于上方时,编译时会抛出错误

如果我将
\u grid.less
导入移动到最后一个媒体查询中的第一个位置,它不会抛出错误,但是使用
\u 768up.less中变量的元素都不会被设置样式

这真是个难题


另外,我正在使用OS X的CodeKit作为我的编译器

首先,您现在可以将
@import
语句和媒体查询耦合在以下内容中:

@import "responsive/mobile" only screen and (min-width: 47.0625em) {
    /* CSS GETS IMPORTED INTO A MEDIA QUERY */
}
我在这件事上绊倒了,花了更少的钱。。。这个问题在1.4中已经解决,但仍有一些编译器是端口(无点)或使用旧版本。如果有更新,也许可以解决这个问题

您应该尝试直接使用less.js,看看是否发生了错误。如果不是,那就是CodeKit编译器版本的问题。

变量范围是您的问题 如果两者都使用了一个变量,则必须将该变量设置在
@媒体
块的“外部”,以便两者都能访问该变量。因此,您需要这样做:

@import "_grid.less";

@media only screen and (min-width: 47.0625em) {
    @import "_768up.less";
} 

@media only screen 
and (min-device-width: 47.0625em) 
and (max-device-width: 64.375em) {
    @import "_768to1030.less";
}
或者,您需要将这些常用变量分离到另一个文件中,然后执行以下操作:

@import "_commonVariables.less";

@media only screen and (min-width: 47.0625em) {
    @import "_grid.less";
    @import "_768up.less";
} 

@media only screen 
and (min-device-width: 47.0625em) 
and (max-device-width: 64.375em) {
    @import "_768to1030.less";
}
或者,您需要重复自己的操作,以便在
@media
块的范围内获取变量:

@media only screen and (min-width: 47.0625em) {
    @import "_grid.less";
    @import "_768up.less";
} 

@media only screen 
and (min-device-width: 47.0625em) 
and (max-device-width: 64.375em) {
    @import "_grid.less";
    @import "_768to1030.less";
}

我不知道
@import
语句,谢谢。我将查看CodeKit,看看是不是这样。我仍然在使用移植的无点编译器处理这个问题。是否有人能够将(部分)较少的文件组合到较少的媒体查询语句中?谢谢,但我不想这样做,因为这会将
\u网格.less
文件导入到我的移动css以及较大的屏幕中,这意味着我必须覆盖一些样式。然后需要进行一些重复,因为您需要以某种方式将该变量置于
@媒体的作用域中。如果前两个解决方案由于需要覆盖而无法工作,则必须在需要代码的每个
@媒体内重复
\u网格.less
调用。我更新了答案以反映这一点。我在发布之前尝试过,但仍然抛出了n个错误。我认为这更多地与我的编译器(CodeKit)有关。最后,我刚刚去掉了
\u网格。less
导入并将其添加到
\u 768up。less
对此投了反对票,但没有解释原因?