如何在切换bootstrap 3面板时为V形符号设置动画?

时间:2017-10-22 04:06:53

标签: javascript html css twitter-bootstrap

我有一个工作解决方案,用于包裹在bootstrap 3手风琴中的面板。

如何从“>”动画更改人字形状态到旋转90度的“^”?

.panel-heading .accordion-toggle:after {
    font-family: 'Glyphicons Halflings';
    content: "\e114";
    float: right;
    color: grey;
}

.panel-heading .accordion-toggle.collapsed:after {
    content: "\e080";
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">


<div class="panel-group" id="accordion">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h3 class="panel-title">
                <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#importationCollapse">Importation</a>
            </h3>
        </div>
        <div id="importationCollapse" class="panel-collapse collapse in">
            <div class="panel-body">
            <p>Content: blahblah</p>
            </div>
        </div>
    </div>
</div>

[编辑] 我正在寻找一个平稳的旋转,我已经知道如何改变V形状态。

2 个答案:

答案 0 :(得分:4)

你可以简单地替换

.panel-heading .accordion-toggle.collapsed:after {
    content: "\e080";
}

使用以下

.panel-heading .accordion-toggle.collapsed:after {
    transform: rotateX(180deg);
}

这应该是诀窍,而不是使用另一个角色。 Demo on Codepen

要为旋转设置动画,您可以添加以下内容

.panel-heading .accordion-toggle:after {
    font-family: 'Glyphicons Halflings';
    content: "\e114";
    float: right;
    color: grey;
    transition: transform 0.5s;
    transform-origin: 8px 7px;
}

沿Z轴旋转

.panel-heading .accordion-toggle.collapsed:after {
    transform: rotateZ(180deg);
}

您可以尝试使用transform-origin来获得所需的结果。

Demo on Codepen

答案 1 :(得分:1)

您可以尝试使用transitiontransform: rotate()来完成内容,而不是更改内容。请查看下面的代码段以供参考。

&#13;
&#13;
.panel-heading .accordion-toggle:after {
  font-family: 'Glyphicons Halflings';
  content: "\e114";
  float: right;
  color: grey;
  transition: all 0.5s ease;
}

.panel-heading .accordion-toggle.collapsed:after {
  /*content: "\e080";*/
  transform: rotate(180deg);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">


<div class="panel-group" id="accordion">
  <div class="panel panel-default">
    <div class="panel-heading">
      <h3 class="panel-title">
        <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#importationCollapse">Importation</a>
      </h3>
    </div>
    <div id="importationCollapse" class="panel-collapse collapse in">
      <div class="panel-body">
        <p>Content: blahblah</p>
      </div>
    </div>
  </div>
</div>
&#13;
&#13;
&#13;