添加打开/关闭图标到Twitter Bootstrap可折叠(手风琴)

Dar*_*ren 84 javascript jquery twitter-bootstrap

我已经设置了这个简单版本的Bootstrap 手风琴:

简单的手风琴: http ://jsfiddle.net/darrenc/cngPS/

目前该图标仅指向下方,但有人知道需要实施哪些JS以便将图标的类更改为:

<i class="icon-chevron-up"></i>
Run Code Online (Sandbox Code Playgroud)

...所以它指向扩大和切换回下来崩溃时再等第四?

小智 92

对于那些正在寻找Bootstrap 3(就像我自己)的解决方案的人来说,这就是答案.

HTML部分:

<div class="btn-group">
  <button type="button" class="btn btn-danger">Action</button>
  <button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#demo">
    <span class="glyphicon glyphicon-minus"></span>
  </button>
</div>
<div id="demo" class="collapse in">Some dummy text in here.</div>
Run Code Online (Sandbox Code Playgroud)

js部分:

$('.collapse').on('shown.bs.collapse', function(){
$(this).parent().find(".glyphicon-plus").removeClass("glyphicon-plus").addClass("glyphicon-minus");
}).on('hidden.bs.collapse', function(){
$(this).parent().find(".glyphicon-minus").removeClass("glyphicon-minus").addClass("glyphicon-plus");
});
Run Code Online (Sandbox Code Playgroud)

手风琴示例:

Bootply手风琴的例子

  • 确切地说,bootstrap 3.x需要什么.如果使用2.x删除`.bs.collapse`.我还改变了`显示和隐藏以显示和隐藏',因此动画在手风琴打开之前发生. (6认同)
  • 这应该是正确的答案,因为它也在版本4中运行 (2认同)

Mar*_*man 46

这是我对Bootstrap 2.x的方法.这只是一些CSS.无需JavaScript:

    .accordion-caret .accordion-toggle:hover {
        text-decoration: none;
    }
    .accordion-caret .accordion-toggle:hover span,
    .accordion-caret .accordion-toggle:hover strong {
        text-decoration: underline;
    }
    .accordion-caret .accordion-toggle:before {
        font-size: 25px;
        vertical-align: -3px;
    }
    .accordion-caret .accordion-toggle:not(.collapsed):before {
        content: "?";
        margin-right: 0px;
    }
    .accordion-caret .accordion-toggle.collapsed:before {
        content: "?";
        margin-right: 0px;
    }
Run Code Online (Sandbox Code Playgroud)

只需将class accordion-caret添加到accordion-group div中,如下所示:

<div class="accordion-group accordion-caret">
    <div class="accordion-heading">
        <a class="accordion-toggle" data-toggle="collapse" href="#collapseOne">
            <strong>Header</strong>
        </a>
    </div>
    <div id="collapseOne" class="accordion-body collapse in">
        <div class="accordion-inner">
            Content
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • @Robb - 我在html中的"collapse"元素中包含了"collapsed"类,以解决初始箭头的问题.我的HTML有点不同但它可能会有效 (7认同)
  • 我发现这有一个例外 - 初始插入符总是显示所有部分的扩展.一旦展开然后再次折叠,它就是正确的. (4认同)
  • 我非常喜欢这种方法马丁.特别是因为非常不引人注目. (2认同)

Phi*_*ann 42

Bootstrap Collapse有一些您可以做出反应的事件:

$(document).ready(function(){    
    $('#accordProfile').on('shown', function () {
       $(".icon-chevron-down").removeClass("icon-chevron-down").addClass("icon-chevron-up");
    });

    $('#accordProfile').on('hidden', function () {
       $(".icon-chevron-up").removeClass("icon-chevron-up").addClass("icon-chevron-down");
    });
});
Run Code Online (Sandbox Code Playgroud)

  • Bootstrap3:事件名称需要有.bs.collapse,因此它们在('hide.bs.collapse')和on('show.bs.collapse')上,或者当你想要添加更多css过渡时显示/隐藏它. (8认同)

baf*_*mca 20

使用CSSes伪选择器:使用Bootstrap 3的集成Glyphicons进行无JS答案后对HTML进行微小修改...

CSS

.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);
}
Run Code Online (Sandbox Code Playgroud)

HTML

添加class="collapsed"到默认关闭的任何锚标记.

这会变成诸如的锚

<a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
Run Code Online (Sandbox Code Playgroud)

<a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
Run Code Online (Sandbox Code Playgroud)

CodePen实例

http://codepen.io/anon/pen/VYobER

截图

它是如何出现在JSBin中的

  • 将其移至CodePen.谢谢你的报道.试试看! (2认同)
  • @bafromca谢谢这个作品非常好!! :) (2认同)

Joh*_*lia 16

添加到@muffls答案,以便这适用于所有Twitter引导程序崩溃并在动画开始之前更改箭头.

$('.collapse').on('show', function(){
    $(this).parent().find(".icon-chevron-left").removeClass("icon-chevron-left").addClass("icon-chevron-down");
}).on('hide', function(){
    $(this).parent().find(".icon-chevron-down").removeClass("icon-chevron-down").addClass("icon-chevron-left");
});
Run Code Online (Sandbox Code Playgroud)

根据您的HTML结构,您可能需要修改parent().


小智 10

我认为最好的代码是:

  $('#accordion1').collapse({
    toggle: false
  }).on('show',function (e) {
        $(e.target).parent().find(".icon-chevron-down").removeClass("icon-chevron-down").addClass("icon-chevron-up");
      }).on('hide', function (e) {
        $(e.target).parent().find(".icon-chevron-up").removeClass("icon-chevron-up").addClass("icon-chevron-down");
      });
Run Code Online (Sandbox Code Playgroud)

  • 这是我唯一的工作解决方案,休息切换所有手风琴组的类.干杯:) (2认同)

rbs*_*hlm 6

如果有人有兴趣,这就是你如何使用BS3,因为他们改变了事件名称:

$('.collapse').on('show.bs.collapse', function(){
  var i = $(this).parent().find('i')
  i.toggleClass('fa-caret-right fa-caret-down');
}).on('hide.bs.collapse', function(){
  var i = $(this).parent().find('i')
  i.toggleClass('fa-caret-down fa-caret-right');
});
Run Code Online (Sandbox Code Playgroud)

您只需将示例中的类名更改为您在案例中使用的类名.


And*_*röm 5

最易读的纯CSS解决方案可能是使用aria-expanded属性。请记住,您需要将aria-expanded =“ false”添加到所有折叠元素,因为未在加载时设置(仅在首次点击时设置)。

HTML:

<h2 data-toggle="collapse" href="#collapseId" aria-expanded="false">
    <span class="glyphicon glyphicon-chevron-right"></span>
    <span class="glyphicon glyphicon-chevron-down"></span> Title
</h2>
Run Code Online (Sandbox Code Playgroud)

CSS:

h2[aria-expanded="false"] span.glyphicon-chevron-down,
h2[aria-expanded="true"] span.glyphicon-chevron-right
{
    display: none;
}

h2[aria-expanded="true"] span.glyphicon-chevron-down,
h2[aria-expanded="false"] span.glyphicon-chevron-right
{
    display: inline;
}
Run Code Online (Sandbox Code Playgroud)

与Bootstrap 3.x一起使用。