导入使用mixins的less文件时可以避免重复的css吗?

Posted

技术标签:

【中文标题】导入使用mixins的less文件时可以避免重复的css吗?【英文标题】:Can I avoid duplicate css when importing a less file that uses mixins? 【发布时间】:2014-02-02 22:18:59 【问题描述】:

我正在尝试使用 Bootstrap 3 附带的更少的 mixin 来创建更多的语义代码。

这是我的设置。我有一个名为base.less 的文件,看起来像这样:

@import "../less/bootstrap.less";

@grid-columns:              12;
@grid-gutter-width:         30px;
@grid-float-breakpoint:     768px;

.wrapper 
  .make-row();

.content-main 
  .make-lg-column(8);

.content-secondary 
  .make-lg-column(3);
  .make-lg-column-offset(1);

然后我有一个名为 article.less 的文件,其中包含仅在我的某些页面上需要的样式,因此我只想在必要时包含该 css。

@import "base.less";

.test-class
    color: blue;


.article-wrapper 
  .make-row();

.article-main 
  .make-md-column(6);

.article-box 
  .make-lg-column(8);
  .make-lg-column-offset(1);

发生的情况是article.css 文件中创建了许多冗余样式,这些样式也在base.css 文件中。我希望通过导入 base.less 文件,它会跳过创建任何 redudnt 样式。

有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

Less 1.5 introduces Reference Imports:

我们还有另一个导入选项 - 参考。这意味着任何 变量、mixins 或选择器将被导入,但从不输出。

例如如果你有

.a 
    color: green;

在一个文件中并导入它

@import (reference) "file.less"; 则不会输出该文件, 但你可以这样做

.b 
    .a;

color: green; 将仅在.b 选择器内输出。 这也适用于扩展,因此您可以使用扩展来带来复杂的 选择器组从 less 或 css 文件到您的主文件。一 用例可能是从引导程序中获取一组选择器,而无需 包括整个图书馆。

这似乎正是您想要的。

【讨论】:

为了清楚起见,我的解决方案是将@import "base.less"; 替换为@import (reference) "base.less"; 太棒了,这是一个很棒的提示!

以上是关于导入使用mixins的less文件时可以避免重复的css吗?的主要内容,如果未能解决你的问题,请参考以下文章

less样式如何使用cssmodule

less:避免编译

怎么理解mixins

Less的模式匹配

我的less学习之路

less的编译