bootstrap 使用mixin设置bs css变量

ekqde3dh  于 6个月前  发布在  Bootstrap
关注(0)|答案(4)|浏览(94)

先决条件

建议

在我看来,使用某种 mixin 来设置 bs css 变量会很好。例如,我们可以使用这个 mixin 来设置 css 变量。这样一来,用户在自定义 bootstrap 以满足他们自己的需求时,就不需要在设置 var 名称时以 $prefix 变量开头。

@mixin set-var($name, $value) {
    --#{$prefix}#{$name}: #{$value};
}

.card-primary {
$background: blue;
$border: if($color == $color-contrast-light, shade-color($background, 10%), tint-color($background, 10%));
$color: color-contrast($background);

    @include set-var(card-border-color, $border);
    @include set-var(card-cap-bg, $background);
    @include set-var(card-cap-color, $color);
    @include set-var(card-color, $color);
    @include set-var(card-bg, tint-color($background, 5%));
}

动机和背景

我看到了很多直接在 sass 中使用 $prefix 变量的重复变量。在我看来,这可以更好,这样喜欢自定义 bootstrap 的用户就不必做太多工作。

2mbi3lxu

2mbi3lxu1#

我能参与这个问题吗?

q3qa4bjr

q3qa4bjr2#

感谢@stijn7621提出的这个功能请求。
我知道我们在与@mdo讨论颜色模式的实现时,曾经谈到过类似的事情。我个人认为,在自定义Bootstrap时,为什么要这样做呢?复制粘贴@include set-var()而不是--#{$prefix},这样做是重复的。它会带来一些非常特定于Bootstrap的内容,而不是使用常规的自定义属性声明。我不确定从可读性和使用性的Angular 来看,这样做是否更好。
此外,在文档中(例如:https://twbs-bootstrap.netlify.app/docs/5.3/components/accordion/#variables),我们会有一个看起来不像自定义属性的@include set-var()列表。但这只是我的个人观点,让我们看看其他人对此有什么看法吧 :)
在启动任何开发之前,@Blueclaus13,让我们等待一下,看看我们是否同意这个新功能。

lg40wkob

lg40wkob3#

感谢@julien-deramond的回答。
我同意set-var也是重复的。然而,如果你稍微修改一下,让它也能接受键值对Map,这个功能可能会更加用户友好。此外,我认为使用mixin会使代码更易懂,并为开发者提供了额外的故障保护,以防他们忘记/拼写错误#{$prefix}或bs来设置或覆盖CSS变量。以下是一个替代建议,它也接受键值对Map:

@mixin set-vars($values) {
    @each $key, $value in $values {
        @include set-var($key, $value);
    }
}

.card-primary {
    @include set-vars(
        (
            card-border-color: $border,
            card-cap-bg: $background,
            card-cap-color: $color,
            card-color: $color,
            card-bg: tint-color($background, 5%)
        )
    );
}

我很可能听到其他人对这个功能的看法!

pbpqsu0x

pbpqsu0x4#

这个功能有什么更新吗?

相关问题