【问题标题】:Bootstrap accordion with arrows带箭头的 Bootstrap 手风琴
【发布时间】:2016-06-23 06:52:08
【问题描述】:
我有一个关于 Bootstrap 手风琴的简单问题。
我创建了一个手风琴,可在标题上单击以展开。这很好用,但我的问题是箭头没有显示在标题中。
.panel-heading [data-toggle="collapse"]:after {
font-family: 'Glyphicons Halflings';
content: "\e072";
/* "play" icon */
float: right;
color: #b0c5d8;
font-size: 18px;
line-height: 22px;
/* rotate "play" icon from > (right arrow) to down arrow */
-webkit-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);
-o-transform: rotate(-90deg);
transform: rotate(-90deg);
}
.panel-heading [data-toggle="collapse"].collapsed:after {
/* rotate "play" icon from > (right arrow) to ^ (up arrow) */
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
}
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.2/js/bootstrap.min.js"></script>
<link href="http://netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css" rel="stylesheet"/>
<!-- Accordion START -->
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordion" data-target="#collapseOne">
<h4 class="panel-title">Test1</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse">
<div class="panel-body">
<p>sadfsadfsdaf sadf</p>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordion" data-target="#collapseTwo">
<h4 class="panel-title">Test2</h4>
</div>
<div id="collapseTwo" class="panel-collapse collapse">
<div class="panel-body">
<p>
Bla bla bla
</p>
</div>
</div>
</div>
</div>
<!-- Accordion END -->
【问题讨论】:
标签:
html
css
twitter-bootstrap
【解决方案1】:
问题在于选择器之间的空间:
.panel-heading [data-toggle="collapse"]:after
^------- // remove this space to make this selector work
现在您正在选择所有具有data-toggle 属性的元素,它们是.panel-heading 的后代。应该是:
.panel-heading[data-toggle="collapse"]:after
.panel-heading {
position: relative;
}
.panel-heading[data-toggle="collapse"]:after {
font-family: 'Glyphicons Halflings';
content: "\e072"; /* "play" icon */
position: absolute;
color: #b0c5d8;
font-size: 18px;
line-height: 22px;
right: 20px;
top: calc(50% - 10px);
/* rotate "play" icon from > (right arrow) to down arrow */
-webkit-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);
-o-transform: rotate(-90deg);
transform: rotate(-90deg);
}
.panel-heading[data-toggle="collapse"].collapsed:after {
/* rotate "play" icon from > (right arrow) to ^ (up arrow) */
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<!-- Accordion START -->
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordion" data-target="#collapseOne">
<h4 class="panel-title">Test1</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse">
<div class="panel-body">
<p>sadfsadfsdaf sadf</p>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordion" data-target="#collapseTwo">
<h4 class="panel-title">Test2</h4>
</div>
<div id="collapseTwo" class="panel-collapse collapse">
<div class="panel-body">
<p>
Bla bla bla
</p>
</div>
</div>
</div>
</div>
<!-- Accordion END -->
【讨论】:
-
这可行,但并不完美。我认为现在与此示例中的行为相同link 问题是打开面板时面板内的文本会跳到右侧。
-
【解决方案2】:
不需要字体(图标):
我有一个简单的解决方案:
.card-link::after {
content: "";
border-bottom: 0;
border-top: .3em solid;
border-right: .3em solid transparent;
border-left: .3em solid transparent;
}
.card-link[aria-expanded="true"]::after {
content: "";
border-top: 0;
border-bottom: .3em solid;
}