【问题标题】:Libsass&Dart-sass give different result as to chaining of CSS selectorLibsass&Dart-sass 对 CSS 选择器的链接给出不同的结果
【发布时间】:2019-12-14 01:22:57
【问题描述】:

假设我想从 SASS 生成下面的 CSS 选择器

.btn.btn {}

但我最终得到了与 dart-sasslib-sass

不同的结果

作为前端开发人员,我曾经使用 sass-loader => node-sass => lib-sass

我该如何解决这个问题?


 %color {
    color: red;
}

@mixin getOverridedSelector{
    &#{&} {
        @content;
    }
}

.test{
       @include getOverridedSelector{
       @extend %color;
     }
}

预期结果:

.test.test{
      color: red;
 }

dart-sass 实际结果:

 .test.test{
      color: red;
 }

lib-sass 实际结果:

 .test{
      color: red;
 }

【问题讨论】:

  • 嗯。 {&} 对我来说效果很好。
  • 这对于测试 SASS 等 btw 非常有用:sassmeister.com
  • 似乎他们在 2019 年修复了它,我的代码示例是新的单元测试 :)

标签: css sass css-selectors scss-mixins


【解决方案1】:

这似乎是 lib-sass 和 ruby​​-sass 中的一个错误

忽略以下内容,因为 OP 要求 @extend 这显然会导致错误。

只需使用 dart-sass 代替。


@mixin getOverridedSelector {
  &#{&} {
    @content;
  }
}

.foo {
  @include getOverridedSelector {
    color: red;
  }
}

这对我来说效果很好。为什么你一开始就有&& 行?

在那里你可以看到它的实际效果:https://codepen.io/GottZ/pen/EqoBmb

【讨论】:

  • 刚刚更新了帖子,我错过了一个重要的细节,即@extend 指令会破坏结果,这就是为什么我的本地无法按预期工作的原因。如何解决这个问题?
  • 嗯..同意。这绝对是个问题。我会四处寻找并尝试一些事情。
  • @extend 似乎出于某种奇怪的原因将其破坏。
  • 我发现即使使用 @extend 指令,dart-sass 编译器也能正常工作,但 Libsass 编译器失败
  • @DengZhebin 我现在在 libsass github 上报告了这个问题:github.com/sass/libsass/issues/2959
猜你喜欢
  • 1970-01-01
  • 2018-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-16
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
相关资源
最近更新 更多