【问题标题】:how can I change the color of bootstrap checkbox?如何更改引导复选框的颜色?
【发布时间】:2020-03-11 06:47:06
【问题描述】:

我有以下html代码:

<div class="container">
  <form name="queryForm" class="form-inline text-center">
    <p class="checkbox-inline">
      <input type="checkbox" name="optionsRadios" id="checkOther" value="other" ng-model="formData.other" ng-true-value="'other'" ng-init="formData.other='other'">Other</p>
   </form>
 </div>

结果是:

将此颜色更改为给定颜色(例如 D7B1D7)的最简单方法是什么?

【问题讨论】:

  • 伙计,在这里stackoverflow.com/questions/28768623/…stackoverflow.com/questions/26821895/… 回答了这个问题,希望你能成功。
  • 链接到引导 CSS 的 HTML 代码不会重现您显示的结果。您是否使用了一些插件或者是否有一些 HTML(缺少引导程序类?因为一种方法是 codepen.io/anon/pen/MeWemd
  • 我的回答有帮助吗?如果没有,请随时提出任何问题。我很乐意回答他们。
  • 我已经更新了我的小提琴。请参阅我的答案中的 cmets。我已经更新了原始链接。

标签: css twitter-bootstrap


【解决方案1】:

如果您使用引导程序并且需要更改复选框颜色背景,只需覆盖此样式:

.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {
  background-color: green!important;
}

.custom-checkbox .custom-control-input:checked:focus ~ .custom-control-label::before {
  box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 255, 0, 0.25)
}
.custom-checkbox .custom-control-input:focus ~ .custom-control-label::before {
  box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 0, 0, 0.25)
}
.custom-checkbox .custom-control-input:active ~ .custom-control-label::before {
  background-color: #C8FFC8; 
}
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>


    <div class="myTest custom-control custom-checkbox">
      <input type="checkbox" class="custom-control-input" id="customCheck1">
      <label class="custom-control-label" for="customCheck1">Check this custom checkbox</label>
    </div>

【讨论】:

  • 回答“昨天” - 就在正确的时间,即使这个问题目前已经快 3 年了;)
  • :D :D 我试着找到解决方案,当我找到后,分享它)
【解决方案2】:

我已经从 CodePen 改编了 .squaredThree 类作为您的示例。如果你想看一个活生生的例子,我的答案底部有一个 Fiddle 链接。

这是更新后的 CSS:

/* .squaredThree */
.squaredThree {
  position: relative;
  float:left;
}

.squaredThree label {
  width: 20px;
  height: 20px;
  cursor: pointer;
  position: absolute;
  top: 0;
  left: 0;
  background: #D7B1D7;
  border-radius: 4px;
  box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 0.4);
}

.squaredThree label:after {
  content: '';
  width: 9px;
  height: 5px;
  position: absolute;
  top: 4px;
  left: 4px;
  border: 3px solid #fcfff4;
  border-top: none;
  border-right: none;
  background: transparent;
  opacity: 0;
  -webkit-transform: rotate(-45deg);
  transform: rotate(-45deg);
}

.squaredThree label:hover::after {
  opacity: 0.3;
}

.squaredThree input[type=checkbox] {
  visibility: hidden;
}

.squaredThree input[type=checkbox]:checked + label:after {
  opacity: 1;
}
/* end .squaredThree */

我已更新您的 HTML 以包含另一个 label,因为原来的 label 被用作伪复选框。这是您更新后的 HTML:

<div class="container">
  <form name="queryForm" class="form-inline">
    <div class="squaredThree">
      <input type="checkbox" name="optionsRadios" id="checkOther" value="other" ng-model="formData.other" ng-true-value="'other'" ng-init="formData.other='other'">
      <label for="checkOther"></label>
    </div>
    <label class="label-text">Other</label>
  </form>
</div>

请注意,额外的label 存在于.squaredThree div 之外。 label 有一个 .label-text 类,因为需要一些额外的样式规则来将文本稍微移动到 checkbox 的右侧:

.label-text {
  position: relative;
  left: 10px;
}

最后,checkbox 中的支票大小不太正确,因此需要额外的规则来纠正这一点:

*,
::before,
::after {
  box-sizing: initial;
}

Fiddle Demo 显示上述内容。

【讨论】:

  • 非常感谢,我查看了您的小提琴,效果很好,我还有一个问题 - 有没有一种方法可以更新 html 代码,以便我有 3 个相邻的复选框?我想要实现的是这个imgur.com/6onY6GA,我认为复制html代码三遍就足够了,但这是结果jsfiddle.net/pvyp4mL3/3我在这里做错了什么?
  • 如果您使用 .container 类包装每个复选框,则可以解决问题:jsfiddle.net/yassarikhan786/pvyp4mL3
  • 谢谢@Yass!!那么有没有一种方法可以将这些复选框及其标签彼此相邻而不是一个在彼此之上? :)
  • @user3766930 你是这个意思吗? jsfiddle.net/yassarikhan786/pvyp4mL3/5
【解决方案3】:
.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {
  border-color: #D7B1D7;
  background-color: #D7B1D7;
}

【讨论】:

  • 引导默认样式:.custom-checkbox .custom-control-input:checked~.custom-control-label::before { background-color: #007bff; } 只是覆盖它
【解决方案4】:

input[type=checkbox] 没有background-color 属性。您可以使用其他方法来获得理想的结果:

  1. 您可以在 div 中使用复选框,然后根据需要设置 div 的样式。

    <div class="row">
      <input type="checkbox" />
    </div>
    
  2. 你可以使用这样的伪元素:

      input[type=checkbox] {
         cursor: pointer;
      }
    
     input[type=checkbox]:after {
      content: " ";
      background-color: #D7B1D7;
      display: inline-block;
      visibility: visible;
     }
    
     input[type=checkbox]:checked:after {
       content: "\2714";
     }
    

【讨论】:

  • 谢谢,我尝试了你的第二种方法,这就是我得到的:imgur.com/uS3J5ou 它看起来不像我想要的样子......你能给我看一下第一点的例子吗?
  • 您能否发送一张图片/快照/链接,说明您希望它的外观如何?
  • @Mona 所以我想实现类似于我已经拥有的效果:i.stack.imgur.com/P27OU.png 但我想要不同的颜色而不是蓝色(在我的情况下 - 橙色)
【解决方案5】:

AndrewRIGHT 回答的简单版本:

.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {
    background-color: #333;
    border-color: #333;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-16
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 2013-12-18
    • 1970-01-01
    相关资源
    最近更新 更多