7

使用 Bootstrap 2.3.2 我有一个带有单个面板的手风琴,该面板在加载页面时打开。

          <div class="accordion" id="refine">
              <div class="accordion-heading">
                <a class="accordion-toggle" data-toggle="collapse" data-parent="#refine" href="#refine-search">
                  Title
                </a>
              </div>
              <div id="refine-search" class="accordion-body collapse in">
                <div class="accordion-inner">
                  Test text....
                </div>
              </div>
          </div>                    

该网站是完全响应的。当切换到移动屏幕尺寸 [@media (max-width: 979px)] 我希望手风琴面板自动关闭,即实际上我希望 div 细化搜索线更改为“折叠”。

在移动模式下,手风琴必须仍然工作,例如用户可以单击手风琴标题,面板将展开,因此我不希望重复的 div 使用 .hidden-desktop 实用程序类等关闭面板。

我一直在寻找答案 - 任何人都可以帮忙吗?

4

4 回答 4

13

所以我最终想出了如何做到这一点,并发布它以防它对任何人有帮助。

将 HTML 更改为:

<div class="accordion" id="refine">

    <div class="hidden-phone">
        <div class="accordion-heading">
            <a class="accordion-toggle" data-toggle="collapse" data-parent="#refine" href="#refine-search">
                <legend>
                    <h2>Refine your search</h2></legend>
            </a>
        </div>
    </div>

    <div class="visible-phone">
        <div class="accordion-heading">
            <a class="accordion-toggle" data-toggle="collapse" data-parent="#refine" href="#refine-search">
                <legend>
                    <h2>Refine your search (press to reveal)</h2></legend>
            </a>
        </div>
    </div>

    <div id="refine-search" class="accordion-body collapse in">

        <div class="accordion-inner">

            Test text....
        </div>

    </div>

</div>

然后在文件中使用这个JS。

$(window).bind('resize load', function() {
    if ($(this).width() < 767) {
        $('#refine-search').removeClass('in');
        $('#refine-search').addClass('out');
    } else {
        $('#refine-search').removeClass('out');
        $('#refine-search').addClass('in');
    }
});
于 2013-08-30T11:38:43.497 回答
7

对于 Bootstrap 3.x,这很好用,无需更改示例代码:

$(window).bind('resize load', function() {
    if ($(this).width() < 767) {
        $('.collapse').removeClass('in');
        $('.collapse').addClass('out');
    } else {
        $('.collapse').removeClass('out');
        $('.collapse').addClass('in');
    }
});
于 2014-03-13T19:51:22.280 回答
2

Bootstrap 4 手风琴:

$(window).bind('resize load', function() {
    if ($(this).width() < 767) {
        $('.collapse').addClass('show');
    } else {
        $('.collapse').removeClass('show');
    }
});
于 2018-05-02T13:39:34.580 回答
0

对于遇到此线程的任何人:截至 2017 年 2 月 17 日,当我遇到此线程时,两个手风琴面板都显示在桌面和移动设备上。根据视口大小,“隐藏电话”和“可见电话”类没有显示/隐藏。我在包装手风琴标题的相应 div 中添加了“hidden-xs”和“visible-xs”,我相信它现在可以按照 3 年前的预期运行。

正如 rtpHarry 解释的那样,您不需要添加和删除“out”类,所以我删除了它。除此之外,我没有做任何额外的编辑。

$(window).bind('resize load', function() {
  if ($(this).width() <= 767) {
    $('#refine-search').removeClass('in');
  } else {
    $('#refine-search').addClass('in');
  }
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />

<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>

<div class="accordion" id="refine">
  <div class="hidden-phone hidden-xs">
    <div class="accordion-heading">
      <a class="accordion-toggle" data-toggle="collapse" data-parent="#refine" href="#refine-search">
        <legend>
          <h2>Desktop: Refine your search</h2>
        </legend>
      </a>
    </div>
  </div>

  <div class="visible-phone visible-xs">
    <div class="accordion-heading">
      <a class="accordion-toggle" data-toggle="collapse" data-parent="#refine" href="#refine-search">
        <legend>
          <h2>Mobile: Refine your search (press to reveal)</h2>
        </legend>
      </a>
    </div>
  </div>

  <div id="refine-search" class="accordion-body collapse in">
    <div class="accordion-inner">
      Test text....
    </div>
  </div>
</div>

我的例子: http: //www.bootply.com/ZAahtL5zGp

于 2017-02-17T16:43:16.263 回答