Magento 2:Less :extend() 不添加 mixin

Jon*_*oth 5 css magento less magento2

我遇到了一个问题,我试图.lib-clearfix()通过使用扩展来申请一个类。问题是扩展本身确实有效,但扩展不会应用混入。相关文件和css如下:

{主题路径}/web/css/source/ _sources.less

@import '_variables.less';
@import (reference) '_extends.less';
@import '_typography.less';
@import '_layout.less';
Run Code Online (Sandbox Code Playgroud)

{主题路径}/web/css/source/ _extends.less

@abs-add-clearfix: {
    .lib-clearfix();
};

.abs-add-clearfix {
    @abs-add-clearfix();
}
Run Code Online (Sandbox Code Playgroud)

lib/web/css/source/lib/ _utilities.less

.lib-clearfix() {
    &:before,
    &:after {
        content: '';
        display: table;
    }
    &:after {
        clear: both;
    }
}
Run Code Online (Sandbox Code Playgroud)

{theme-path}/{Module}/web/css/source/ _module.css

& when (@media-common = true) {
  .header.panel:extend(.abs-add-clearfix) {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

.header.panel,正如所写的那样不呈现.lib-clearfix()样式。但是,如果在_module.less我更改header.panel为-

.header.panel {
  .lib-clearfix();
}
Run Code Online (Sandbox Code Playgroud)

-- 它按预期工作;应用了 clearfix 样式。为了测试扩展是否被解析,我更改@abs-add-clearfix并恢复了.header.panelcss。

较少的

@abs-add-clearfix: {
  color: blue;
};

.abs-add-clearfix {
    @abs-add-clearfix();
}

.header.panel:extend(.abs-add-clearfix) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

输出

.header.panel {
  color: blue;
}
Run Code Online (Sandbox Code Playgroud)

因此,我无法理解为什么.lib-clearfix()通过扩展调用失败,尽管该扩展中的其他 css 正确应用,以及为什么在扩展失败的情况下.lib-clearfix().header.panel选择器中调用成功。

有人可以帮助我了解这里发生了什么吗?