在 Bootstrap 可折叠面板组中切换时更改面板标题的背景颜色
Change background colour of panel heading when toggled in Bootstrap collapsible panel group
我正在尝试使用 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/
如有任何建议,我将不胜感激。
您可以在用户单击面板时添加 class。然后样式为 new class。让我们试试这个。
CSS
.panel.active {background: red}
JS
$('.panel').on('click', function(){
$(this).toggleClass('active')
})
使用 .active
class 而不是 :active
伪 class 伪 class 只有在用户按下鼠标按钮(或等效的指点设备)时才会持续.将 link 的父级 .panel-header
作为目标:
$('.panel-heading').on('click', function(e) {
$(this).toggleClass('active');
});
CSS 已修改为通过将 class:
加倍来以更高的特异性覆盖 .panel-heading
.panel-heading.panel-heading {...
有些Bootstrap class无法通过级联优先级覆盖,如上所示在目标class上加倍 - 不要使用!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>
我正在尝试使用 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/
如有任何建议,我将不胜感激。
您可以在用户单击面板时添加 class。然后样式为 new class。让我们试试这个。
CSS
.panel.active {background: red}
JS
$('.panel').on('click', function(){
$(this).toggleClass('active')
})
使用 .active
class 而不是 :active
伪 class 伪 class 只有在用户按下鼠标按钮(或等效的指点设备)时才会持续.将 link 的父级 .panel-header
作为目标:
$('.panel-heading').on('click', function(e) {
$(this).toggleClass('active');
});
CSS 已修改为通过将 class:
加倍来以更高的特异性覆盖.panel-heading
.panel-heading.panel-heading {...
有些Bootstrap class无法通过级联优先级覆盖,如上所示在目标class上加倍 - 不要使用!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>