【问题标题】:Bootstrap 4 theme colors: variables vs mapBootstrap 4 主题颜色:变量与地图
【发布时间】:2018-09-30 02:48:42
【问题描述】:

在 Bootstrap 4 中,可以通过覆盖如下变量来更改主题颜色:

$primary: #0074d9;
$danger: #ff4136;

或者像这样修改主题颜色映射:

$theme-colors: (
  "primary": #0074d9,
  "danger": #ff4136
);

我们何时以及为什么要使用其中的一种?

【问题讨论】:

    标签: twitter-bootstrap sass bootstrap-4


    【解决方案1】:

    事实上,最好始终覆盖 $theme-colors 映射中的主题颜色,以确保替换引导程序稍后在生成相应 CSS 时使用这些颜色的颜色。 Bootstrap encourages to do so.

    如果您决定覆盖默认颜色定义,您将覆盖颜色图本身的创建,因此引导程序将无法再访问默认颜色。

    您可以执行以下操作:

    选项 1

    覆盖默认值(Bootstrap 不鼓励)。

    选项 2

    使用十六进制值覆盖地图:

    $theme-colors : (
        'primary' : #0074d9,
        'danger'  : #ff4136
    );
    

    然后您可以使用map_get 访问您的任何主题颜色:

    $my-color : map_get($theme-colors, 'primary'); // #0074d9
    

    选项 3

    您可以定义自己的一组变量来覆盖地图,然后您将始终可以访问您的变量而无需使用map_get

    $my-primary-color : #0074d9;
    $my-danger-color  : #ff4136;
    
    $theme-colors : (
        'primary' : $my-primary-color,
        'danger'  : $my-danger-color
    );
    

    【讨论】:

    • 覆盖地图而不是变量的问题是,我们无法访问我们自己的 sass 文件中新颜色的变量。
    • 然后您可以定义自己的一组变量,并使用这些变量覆盖地图;这样您就可以访问自己的变量,并根据 Boostrap 文档鼓励您执行的操作更改主题。您始终可以使用map_get 来获取值。例如,如果您覆盖地图中的primary 值,则可以使用map_get($theme_colors, 'primary'); 来获取其值。
    • @slacle 我已经更新了我的答案以更好地满足您的需求。如果有帮助,请告诉我。
    • 这里我们也可以覆盖边框颜色吗?
    • 对于使用 bootstrap 5 的其他人 - $primary: [color] 是首选方法:getbootstrap.com/docs/5.0/customize/sass/#maps-and-loops
    猜你喜欢
    • 2021-05-25
    • 2018-04-12
    • 2019-11-15
    • 2021-03-04
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    相关资源
    最近更新 更多