如何更改引导程序版本 4 按钮颜色

Posted

技术标签:

【中文标题】如何更改引导程序版本 4 按钮颜色【英文标题】:how to change bootstrap version 4 button color 【发布时间】:2018-08-17 11:26:50 【问题描述】:

我可以通过更改 bootstrap v4 中的主题颜色来更改主按钮颜色。但它也会影响所有其他组件。 如何在不影响主题颜色的情况下设置主按钮颜色? 我不想设置brand-primary并实现它。还有其他选择吗?

【问题讨论】:

【参考方案1】:

您必须创建一个自定义 css 表并覆盖按钮样式或将按钮添加一个新类并覆盖一些属性。

<button class="btn-primary">Button</button>

.btn-primary
    background-color:black;


<button class="btn-primary custom-btn-class">Button</button>

.custom-btn-class
     background-color:black;

【讨论】:

我正在寻找 bootstrap 4 解决方案 @Jocket 那么这怎么不是 BS 4 解决方案呢?【参考方案2】:

试试这个方法

添加一个 classbutton ,这里是 custom-btn 并在我们的 stylesheet 中为其编写 css。

.btn-primary.custom-btn 
	background-color: #000;
	border-color: #000;
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet"/>

<div class="container">
	<button type="button" class="btn btn-primary custom-btn">Custom</button>
  <button type="button" class="btn btn-primary">Default</button>
</div>

【讨论】:

请在您的答案中使用 Bootstrap 4 stable 版本。 Alpha 已经很老了。 这不包括悬停和活动状态。【参考方案3】:

根据引导程序documentation

Bootstrap 的许多组件都是使用基本修饰符类构建的 方法。这意味着大部分样式都包含在基础中 类(例如,.btn),而样式变化仅限于修饰符 类(例如,.btn-danger)。这些修饰符类是从 $theme-colors 映射来自定义我们的编号和名称 修饰符类。

因此,如果您更改主题颜色,那么它将影响所有内容。

如果您还想在其他地方使用该颜色,也许您应该在 $theme-colors 变量中添加颜色。

【讨论】:

【参考方案4】:

您可以通过 sass 文件 (Bootstrap 4) 中的变量更改颜色来添加自定义颜色或重新定义颜色。

$theme-colors: (
   primary: red,
);
@import "~bootstrap/scss/bootstrap";

如果您对颜色使用相同的键,您将重新定义 Bootstrap。否则,使用新键创建新类。

本示例将原色从蓝色变为红色

【讨论】:

对于 laravel 5.7,在 _variables.scss 中更改主题颜色。【参考方案5】:

2019 年 Bootstrap 4.1+ 更新

现在 Bootstrap 4 使用 SASS,您可以使用 button-variant 混合轻松仅更改按钮颜色。由于您只想更改主按钮颜色,而不是整个主主题颜色,因此您需要使用 SASS 中的 button-variant mixins。您可以设置任何您想要的$mynewcolor 和/或lighten()darken() 百分比。

$mynewcolor:teal;

.btn-primary 
    @include button-variant($mynewcolor, darken($mynewcolor, 7.5%), darken($mynewcolor, 10%), lighten($mynewcolor,5%), lighten($mynewcolor, 10%), darken($mynewcolor,30%));


.btn-outline-primary 
    @include button-outline-variant($mynewcolor, #222222, lighten($mynewcolor,5%), $mynewcolor);

https://www.codeply.com/go/f3uTwmsCVZ(SASS 演示

这个 SASS 编译成下面的 CSS...

.btn-primarycolor:#fff;background-color:teal;border-color:#005a5a

.btn-primary:hovercolor:#fff;background-color:#004d4d;border-color:#009a9a
.btn-primary:focus,.btn-primary.focusbox-shadow:0 0 0 .2rem rgba(0,90,90,0.5)
.btn-primary.disabled,.btn-primary:disabledcolor:#fff;background-color:teal;border-color:#005a5a
.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-togglecolor:#fff;background-color:#00b3b3;border-color:#000
.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focusbox-shadow:0 0 0 .2rem rgba(0,90,90,0.5)

.btn-outline-primarycolor:teal;background-color:transparent;background-image:none;border-color:teal.btn-outline-primary:hovercolor:#222;background-color:#009a9a;border-color:teal
.btn-outline-primary:focus,.btn-outline-primary.focusbox-shadow:0 0 0 .2rem rgba(0,128,128,0.5)
.btn-outline-primary.disabled,.btn-outline-primary:disabledcolor:teal;background-color:transparent
.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-togglecolor:#fff;background-color:#009a9a;border-color:teal
.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focusbox-shadow:0 0 0 .2rem rgba(0,128,128,0.5)

https://www.codeply.com/go/l9UGO7J6V1(CSS 演示


要更改 所有 上下文类(bg-primary、alert-primary 等)的原色,请参阅:Customizing Bootstrap CSS template 和 How to change the bootstrap primary color?

另见:https://***.com/a/50973207/171456How to theme bootstrap

【讨论】:

这应该是公认的答案,它涵盖了所有按钮状态。 要注意字体颜色不能与背景颜色分开,这令人失望。 @nicodemus13 你的意思是你不能使用button-variant mixin? 是的,抱歉,不清楚。字体颜色是根据背景颜色计算出来的。 参数是button-variant(background, border-color, hover:background-color, hover:background-color, active:background-color, active:background-color)【参考方案6】:

我有一个类似的问题:我想让按钮匹配它的容器颜色。

所以我创建了一个 btn 类,它会在页面加载时自动适应其父颜色。我对结果很满意(事实上我什至正在创建一个小插件)。 JSfiddle here

/*
** Author: Jean-Marc Zimmer
** Licence: MIT
*/

$(function() 

  const hexDigits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];

  function hex(x) 
    return isNaN(x) ? "00" : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16];
  
  function hexify(rgb) 
    rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
    return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
  
  function darken(rgb) 
    rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
    return "rgb(" + parseInt(0.9 * rgb[1]) + ',' + parseInt(0.88 * rgb[2]) + ',' + parseInt(0.87 * rgb[3]) + ')';
  

  function getParentBackground($elem) 
    var color = $elem.css("background-color");
    if (color && color !== 'rgba(0, 0, 0, 0)')
      return color;
    return ($elem.is('body') ? false : getParentBackground($elem.parent()));
  

  function getParentColor($elem) 
    var color = $elem.css("color");
    if (color && color !== 'rgba(0, 0, 0, 0)')
      return color;
    return ($elem.is('body') ? false : getParentColor($elem.parent()));
  

  $('.btn-negative, .btn-outline-negative').each(function() 
    var bgColor = hexify(getParentBackground($(this).parent()));
    var color = hexify(getParentColor($(this).parent()));
    var rgb = getParentColor($(this).parent());
    this.style.setProperty('--btn-negative-color0', bgColor);
    this.style.setProperty('--btn-negative-color1', color);
    this.style.setProperty('--btn-negative-shadow-color', color + "88");
    this.style.setProperty('--btn-negative-color2', hexify(darken(rgb)));
    this.style.setProperty('--btn-negative-color3', hexify(darken(darken(rgb))));
  );

);
/*
** Author: Jean-Marc Zimmer
** Licence: MIT
*/

.btn-negative::before,
.btn-outline-negative::before 
  --btn-negative-color0: #fff;
  --btn-negative-color1: #000;
  --btn-negative-color2: #000;
  --btn-negative-color3: #000;
  --btn-negative-shadow-color: #0008;


.btn-outline-negative 
    background-color: var(--btn-negative-color0);
    border: solid 1px var(--btn-negative-color1);
    color: var(--btn-negative-color1);


.btn-negative,
.btn-outline-negative.active,
.btn-outline-negative:hover:not(.disabled):not([disabled]),
.btn-outline-negative:active:not(.disabled):not([disabled]) 
    background-color: var(--btn-negative-color1);
    color: var(--btn-negative-color0);


.btn-negative.active,
.btn-negative:hover:not(.disabled):not([disabled]),
.btn-negative:active:not(.disabled):not([disabled]) 
    background-color: var(--btn-negative-color2);
    color: var(--btn-negative-color1);


.btn-negative.active:hover,
.btn-negative:hover:active:not(.disabled):not([disabled]) 
    background-color: var(--btn-negative-color3);
    color: var(--btn-negative-color1);


.btn-negative:focus,
.btn-outline-negative:focus 
    box-shadow: 0 0 0 .2rem var(--btn-negative-shadow-color);
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" />
<script src="https://code.jquery.com/jquery-3.3.1.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" type="text/javascript"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" type="text/javascript"></script>

<div class="container">
    <div class="alert alert-success">
        <p>Some text...</p>
        <button class="btn btn-success">btn-success</button>
        <button class="btn btn-negative">btn-negative</button>
        <button class="btn btn-outline-success">btn-outline-success</button>
        <button class="btn btn-outline-negative">btn-outline-negative</button>
    </div>
</div>

由于 sn-p 中的 CSS 调用顺序,样式无法正确应用。

欢迎任何使它变得更好的想法!

【讨论】:

【参考方案7】:
<a  class="btn btn-secondary" href="#">Find out more</a>



.featured  .btn-secondary 
     font-weight: bold;
     background-color: blue;

只需在 css 中编辑它对我有用

【讨论】:

以上是关于如何更改引导程序版本 4 按钮颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在引导程序 4 折叠按钮中更改按钮文本

如何在引导程序中更改面板主体背景颜色?

如何在引导反应/redux 应用程序中覆盖引导主题颜色?

如何更改引导程序原色?

使用引导程序更改表头颜色

你如何从反应引导程序中覆盖切换按钮的css?