Bootstrap Collapse Accordion - 默认展开/折叠?

Posted

技术标签:

【中文标题】Bootstrap Collapse Accordion - 默认展开/折叠?【英文标题】:Bootstrap Collapse Accordion - Default Expand/Collapse? 【发布时间】:2013-09-20 12:07:34 【问题描述】:

我正在使用带有 jQ​​uery 的 Twitter Bootstrap。

根据引导文档,如果您希望可折叠元素默认打开,请添加附加类“in”。如果您希望可折叠元素默认折叠,您可以将高度设置为 0px。

这一切都很好。

我想使用媒体查询将元素设置为在大屏幕上默认打开,在小屏幕上默认折叠(然后单击以切换两者)...

我的 html

<div class="accordion" id="accordion1">
 <div class="accordion-group">
  <div class="accordion-heading">
   Heading text.
   <a class="accordion-toggle" data-toggle="collapse" href="#collapseOne">
    (Click to show/hide)
   </a>
  </div>
  <div id="collapseOne" class="accordion-body collapse">
   <div class="accordion-inner">
    Lorem ipsum.
   </div>
  </div>
 </div>
</div>

我的 CSS:

@media (min-width: 768px) 
    .collapse 
        height: auto;
    

@media (max-width: 767px) 
    .collapse 
        height: 0px;
    

在您开始点击它之前,这一切正常……

低于 767px 的元素默认折叠,高于 767px 的元素默认打开。正确。

767px以下可以点击打开元素,打开正常。再次单击它会隐藏。冲洗并重复。正确。

当您单击以折叠元素时,超过 767 像素,它会关闭但随后会重新打开。再次单击它,它会关闭并这次保持关闭状态。再次单击它会正常打开。再次点击它就可以正常关闭了。

所以由于某种原因超过 767px(当元素默认打开时),需要两次单击才能使其保持折叠状态而不重新打开自身,然后它就可以正常工作了。

想法?

【问题讨论】:

How do I get my accordion to load with all the menus closed?的可能重复 【参考方案1】:

您不能仅使用媒体查询来实现这种类型的行为,因为 Twitter Bootstrap 的 Accordion 会查找 .in 类以展开/折叠相应的 .accordion-body

一个选项是在页面加载时检测窗口宽度,然后添加使用 Bootstrap 的.collapse() 方法来显示/隐藏.accordion-body

$(function()
    $(window).resize(function()     // Optional: if you want to detect when the window is resized;
        processBodies($(window).width());
    );
    function processBodies(width) 
        if(width > 768) 
            $('.accordion-body').collapse('show');
        
        else 
            $('.accordion-body').collapse('hide');
        
    
    processBodies($(window).width());
);

演示:http://jsfiddle.net/grim/z2tNg/

【讨论】:

以上是关于Bootstrap Collapse Accordion - 默认展开/折叠?的主要内容,如果未能解决你的问题,请参考以下文章

python测试开发django-188.Bootstrap折叠(Collapse)插件

Bootstrap的js插件之折叠(collapse)

javascript Bootstrap Basic Navbar Collapse,没有jQuery或Bootstrap JS

Bootstrap Collapse 不会自动折叠

[Bootstrap]- Dropdown 与 Collapse 一起使用时的奇怪行为

AngularJs的UI组件ui-Bootstrap分享——Collapse