【问题标题】:Force LESS to import a file twice强制 LESS 导入文件两次
【发布时间】:2013-12-11 18:11:51
【问题描述】:

我正在构建一个变量驱动的 LESS 框架,其中子主题可以覆盖父主题中设置的变量。该框架包括响应式设计,因此变量为每个媒体查询设置了不同的值。为了使媒体查询特定变量生效,创建主布局的相同样式也必须存在于媒体查询中。为了使其尽可能动态,我创建了布局较少的文件,我想在每次媒体查询时导入这些文件。不幸的是,LESS 只导入样式一次,并忽略同一文件的所有后续导入。

这是它的主要内容:

style.less:

@import "variables"; // has the variables for the main layout
@import "variables-calculations";  // has all the dynamic element size calculations that change with the defined variables
@import "layouts";  // has all of the styles that incorporate the variables
@import "responsive-tablet-wide";

media-query-tablet-wide.less

@media screen and (max-width: 1199px) {
  @import "variables-responsive-tablet-wide";  // has all the variables for the current breakpoint
  @import "variables-calculations";  
  @import "layouts";
}

媒体查询的结果输出?空:

@media screen and (max-width: 1199px) {

}

我正在使用 LESS 编译器 Prepros。

如何强制 LESS 编译“布局”两次?或者 5 次,就此而言。

【问题讨论】:

  • 以防万一有@import (multiple) 声明强制它导入更多。但实际上,对于这个特定用例,这并不是您真正需要的,请参阅@Bass Jobsen's answer
  • 其实,你的建议正是我所需要的。另一个建议只是让事情变得更加混乱。
  • 好吧,如果没有看到“变量”内部,我不能肯定地说,但我怀疑您很可能正在尝试以迭代方式使用这些变量(因此您将面临更多问题因为 LESS 变量不能那样工作)。但如果不是你的情况 - 很酷 - 我很高兴我的评论有所帮助。
  • LESS 变量最酷的地方在于,您可以在不同的范围内以不同的方式定义它们。例如:如果我有一个 1100 像素的全局页面宽度,我可以在媒体查询中再次将变量设置为 950 像素,它只会影响将它合并到该媒体查询中的样式。这就是为什么我想在每个媒体查询中导入相同的样式。

标签: css less prepros


【解决方案1】:

我应该在一个文件中定义你的变量并将目标/设备附加到它以区分它们

所以变量应该定义:

@var1: 15;
@var1-tablet: 30; 
etc.

主要原因,见http://lesscss.org/

当定义一个变量两次时,最后一次定义的变量是 已使用,从当前范围向上搜索。这类似于 css 本身定义中的最后一个属性用于 确定价值。

【讨论】:

  • 我有意利用这种行为来发挥自己的优势。我不是每个值都有 4 个变量,而是有一个变量,并且只在我需要的范围内更改它的值。这也有助于减少在框架内工作的技术人员 - 无需记住额外的变量名称。
  • 我对您的框架了解的不够多/一无所知,无法告诉您是否正确。我认为理解打开variables-responsive-tablet-wide 进行编辑,或在.. 中编辑@vars-responsive-tablet-wide 将具有相同的难度。
  • 我在上面添加了另一条评论来解释为什么我使用相同的变量名:如果你有一个在任何括号之外声明的变量,那么在一些括号内更改变量的值(如媒体查询)新值仅应用于括号内的变量。在外面,它恢复到原始值。
猜你喜欢
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 2012-10-14
  • 1970-01-01
  • 2019-11-28
  • 1970-01-01
相关资源
最近更新 更多