PostCSS如何正确处理类似“#{$Interpolation}”这样的SASS语法

发布于 2022-09-06 20:44:25 字数 1211 浏览 25 评论 0

我在PostCSS下编译一段这样的css时,未能达到预期的结果,首先是css代码:

.component {
  $c: &;
  padding: 2vw;
  &__card {
    background-color: #fff;
    &:hover #{$c}__name {
      color: #bada55;
    }
  }
  &__name {
    color: #000;
  }
  &__button {
    background-color: blue;
    color: #fff;
  }
}

我这里使用的是SCSS解析,用了PreCSS插件,但是编译的结果如下:

.component {
  padding: 2vw;
}
  .component__card {
    background-color: #fff;
  }
  .component__card:hover .component__card__name {
      color: #bada55;
    }
  .component__name {
    color: #000;
  }
  .component__button {
    background-color: blue;
    color: #fff;
  }

显然在带有伪类:hover的那一处是错误的。正确的结果应该是:

.component {
  padding: 2vw;
}

.component__card {
  background-color: #fff;
}

.component__card:hover .component__name {
  color: #bada55;
}

.component__name {
  color: #000;
}

.component__button {
  background-color: blue;
  color: #fff;
}

可以通过这个在线SASS编译http://sass.js.org/测试。

那么如何才能在PostCSS下得到正确的结果呢,是否有其他插件可以实现,难道只能避免使用这样的SASS写法了吗?

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

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

发布评论

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

评论(1

萌辣 2022-09-13 20:44:25
.component {
  $c: &;
  padding: 2vw;
  &__card {
    background-color: #fff;
    &::hover {
        #{$c}__name {
      color: #bada55;
    }
    }
  }
  &__name {
    color: #000;
  }
  &__button {
    background-color: blue;
    color: #fff;
  }
}

图片描述

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文