Unable to override $theme-color in bootstrap 4

前端 未结 4 779
無奈伤痛
無奈伤痛 2020-12-24 03:00

It\'s bootstrap 4.0 with SASS

My style.scss file contains the following code:

@import \"../bootstrap/scss/bootstrap\";

@im         


        
4条回答
  •  春和景丽
    2020-12-24 03:38

    None of the solutions provided work. Some are close and will update the color use on most elements, but not all elements. I have tried them all (and every other alternative I can find on StackOverflow and other websites, but those solutions only affect the elements that are specifically referencing the color property and does not update those using the theme-color function to get the color.

    The expected solution (and recommended by others) is

    /* import only the necessary Bootstrap files */
    @import "../../node_modules/bootstrap/scss/functions";
    @import "../../node_modules/bootstrap/scss/variables";
    
    /* -------begin customization-------- */
    $colors: (
      "" + blue: #004C9E
    );
    
    /* 80 required to bring primary and secondary colors to AAA standards */
    $theme-colors: (
      primary: #004C9E
    );
    
    // /* -------end customization-------- */
    
    /* finally, import Bootstrap to set the changes! */
    @import "../../node_modules/bootstrap/scss/bootstrap";
    

    But this leaves 15 occurences of #007bff (the normal blue/primary color) throughout the generated custom.css. Examples of it occur in the pagination section, e.g.

    .page-item.active .page-link {
      z-index: 1;
      color: #fff;
      background-color: #007bff;
      border-color: #007bff;
    }
    

    By setting both the $colors and the $theme-colors custom properties after the import of the functions.scss, and placing the statement to import the variables.scss AFTER these changes appears to set the new colors throughout. I presume that by setting these variables specifically, the bootstrap variables cannot override them.

    @import "../../node_modules/bootstrap/scss/functions";
    
    /* -------begin customization-------- */
    $colors: (
      "" + blue: #004C9E
    );
    
    /* 80 required to bring primary color to AAA standards */
    $theme-colors: (
      primary: #004C9E
    );
    
    @import "../../node_modules/bootstrap/scss/variables";
    
    /* put other customization in here */
    
    // /* -------end customization-------- */
    
    /* finally, import Bootstrap to set the changes! */
    @import "../../node_modules/bootstrap/scss/bootstrap";
    

    The may not seem right, but it does appear to work. I'm not a SASS expert, so maybe someone else could explain this better. I hope this helps anyone who may still be struggling to solve this issue.

提交回复
热议问题