使用less映射出来的变量一直提示未找到

发布于 2022-09-12 03:14:34 字数 645 浏览 37 评论 0

文件a.less

#colorRules{
  @colora: #red;
  @colorb: #blue;
}
@ns: #colorRules();

文件b.less

    #colorRules{
      @colora: #dark;
      @colorb: #232323;
    }
    @ns: #colorRules();

文件 index.less
`

@import a.less;
.color-factory(@obj){
    @v-colora: "colora";
    @v-colorb: "colorb";
    color: @obj[@@v-colora];
    background: @obj[@@v-colorb];
}
.box {
    .color-factory(@ns);
    &.theme-dark {
     @import b.less;
        .color-factory(@ns);
    }
}

在index.less文件中,在.theme-dark调用.color-factory的时候一直报 Variable @colorb not found

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

回眸一笑 2022-09-19 03:14:34

颜色值为颜色名时前面不需要加 #

#colorRules {
  @colora: red;
  @colorb: blue;
}
@ns: #colorRules();

.color-factory(@obj) {
  @v-colora: 'colora';
  @v-colorb: 'colorb';
  color: @obj[ @@v-colora];
  background: @obj[ @@v-colorb];
}

.box {
  .color-factory(@ns);
  &.theme-dark {
    #colorRules {
      @colora: #000;
      @colorb: #232323;
    }
    @ns: #colorRules();
    .color-factory(@ns);
  }
}

output

.box {
  color: red;
  background: blue;
}
.box.theme-dark {
  color: #000;
  background: #232323;
}

根据你的代码逻辑直接这样写就可以了:

.color-factory(@color; @bg) {
  color: @color;
  background: @bg;
}

.box {
  .color-factory(red, blue);
  &.theme-dark {
    .color-factory(#000, #232323);
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文