3

我正在尝试使用 Bootstrap 创建一个可折叠的面板组,并且我希望在面板组未折叠时面板标题更改背景颜色(一种颜色用于折叠面板组,一种用于展开)。我曾尝试使用 :active 选择器,但这仅在单击时更改颜色,它不会持续更长时间:

 <div class="panel-group">
  <div class="panel panel-default">
    <div class="panel-heading">
      <a data-toggle="collapse" class="panel-title" href="#collapse1">Title</a>
    </div>
    <div id="collapse1" class="panel-collapse collapse">
      <ul class="list-group">
        <li class="list-group-item">item 1</li>
        <li class="list-group-item">item 2</li>
      </ul> 
    </div>
  </div>
</div>
.panel-heading a:active {
  background: red;
}

https://jsfiddle.net/s625dgty/

我将不胜感激任何建议。

4

2 回答 2

2

使用.active类而不是:active伪类,伪类仅在用户保持鼠标按钮(或指向设备等效项)按下时才会持续。.panel-header改为定位链接的父级:

$('.panel-heading').on('click', function(e) {
  $(this).toggleClass('active');
});

CSS已被修改为.panel-heading通过加倍类以更高的特异性覆盖:

.panel-heading.panel-heading {...

一些 Bootstrap 类不能被级联优先级覆盖,只需加倍目标类,如上所示——不要使用!important

另外,<link>放在<head>. 放在<script>结束</body>标签之前。见演示。


演示

.panel-heading.panel-heading.active {
  background: red;
}

.panel-title {
  display: inline-block;
  width: 100%;
}

.panel-heading.panel-heading.active .panel-title {
  color: white;
  font-weight: 900;
}
<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
</head>

<body>
  <div class="panel-group">
    <div class="panel panel-default">
      <div class="panel-heading">
        <a data-toggle="collapse" class="panel-title" href="#collapse1">Title</a>
      </div>
      <div id="collapse1" class="panel-collapse collapse">
        <ul class="list-group">
          <li class="list-group-item">item 1</li>
          <li class="list-group-item">item 2</li>
        </ul>
      </div>
    </div>
  </div>

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
  <script>
    $('.panel-heading').on('click', function(e) {
      $(this).toggleClass('active');
    });
  </script>
</body>

</html>

于 2020-04-10T10:30:12.537 回答
0

当用户单击面板时,您可以添加一个类。然后样式到新的类。让我们试试这个。

CSS

.panel.active {background: red}

JS

$('.panel').on('click', function(){
    $(this).toggleClass('active')    
})
于 2020-04-10T10:14:43.863 回答