我正在尝试创建一个 for 循环,它将生成用于样式化进度条的模式:

progress[value="1"]::-webkit-progress-bar {
  background: conic-gradient(
                var(--progress-color) 0% 1%,
                var(--rest-color) 1% 100%
              );
}

我试过了:

@for $percent from 0 through 99 {
    progress[value="#{$percent}"]::-webkit-progress-bar {
            background: conic-gradient(
        var(--progress-color) 0% #{$percent}%,
        var(--rest-color) #{$percent}% 100%);
    }
}

@mixin gradient($percent) {
    background: conic-gradient(
        var(--progress-color) 0% #{$percent}%,
        var(--rest-color) #{$percent}% 100%);
}


@for $i from 0 through 99 {
    progress[value="{$i}"]::-webkit-progress-bar {
        @include gradient($i);
    }
}

奇怪的是,在https://www.sassmeister.com/它根据我选择的编译器显示不同的错误消息,在https://beautifytools.com/scss-compiler.php它工作正常。它在 CodePen 上也不起作用。


我认为这是解析器中的一个错误。添加百分比#{"%"}有效:

@for $percent from 0 through 99 {
    progress[value="#{$percent}"]::-webkit-progress-bar {
            background: conic-gradient(
                var(--progress-color) 0% #{$percent}#{"%"},
                var(--rest-color) #{$percent}% 100%
            );
    }
}
progress[value="100"]::-webkit-progress-bar { background: var(--progress-color); }

@for $percent from 0 through 99 {
    progress[value="#{$percent}"] {
        background: conic-gradient(
            var(--progress-color) 0% #{$percent}#{"%"},
            var(--rest-color) #{$percent}% 100%);
    }
}
progress[value="100"] {
    background: var(--progress-color);
}

请注意,在 CodePen 上,两个 % 都需要写为#{"%"}

编辑:我已将其报告为错误,但这是设计使然。