javascript - 在 bootstrap3 中切换侧边栏?

标签 javascript twitter-bootstrap-3 sidebar

我正在尝试获取可切换的侧边栏:

没有侧边栏:

>> | Main text
   | goes here

带侧边栏:

H1 << | Main text
H2    | goes here

(这是行为示例:http://pythonhosted.org/cloud_sptheme - 请参阅侧边栏上的按钮。使用其代码库并不容易,因为它不是基于 Bootstrap 的)

我从一个使用 Bootstrap 2 和 jQuery 1.8 的工作示例开始:jsfiddle , SO question ,并尝试使其在 Bootstrap 3 上运行。下面是代码 ( code on bootply ):

JavaScript:

$.asm = {};
$.asm.panels = 1;

function sidebar(panels) {
    $.asm.panels = panels;
    if (panels === 1) {
        $('#content').removeClass('col-md-9');
        $('#content').addClass('col-md-12');
        $('#sidebar1').removeClass('show');
        $('#sidebar1').addClass('hide');
    } else if (panels === 2) {
        $('#content').removeClass('col-md-12');
        $('#content').addClass('col-md-9');
        $('#sidebar1').removeClass('hide');
        $('#sidebar1').addClass('show');
    }
}

$('#toggleSidebar').click(function() {
    if ($.asm.panels === 1) {
        $('#toggleSidebar').addClass('fa-backward');
        $('#toggleSidebar').removeClass('fa-forward');
        return sidebar(2);
    } else {
        $('#toggleSidebar').removeClass('fa-backward');
        $('#toggleSidebar').addClass('fa-forward');
        return sidebar(1);
    }
})

CSS:

#toggleSidebar {
  position:fixed;
  display:block;
  left:0;
  top:45px;
  color:#779DD7;
  padding:2px 4px;
}

hide {
    display: none;
}

show {
    display: inherit;
}

html:

<div class="container">
  <div class="row">
    <div class="col-md-3 hide" id="sidebar1">
      <div id="sidebar" class="bs-sidebar nav bs-sidenav pre-scrollable" role="complementary">

        Toc goes here.

      </div>
    </div>

    <div class="col-md-12" id="content">

      Main text goes here.

    </div>

  </div>
  <a id="toggleSidebar" href="#toggleSidebar1" class="fa fa-forward"</a>
</div>

编辑:

Off canvas 不是我需要的:它不保留水平空间,它将 div 向右移动,并且 div 离开屏幕。将 col-md-9 更改为 col-md-12 并返回 -- 是我能想到的解决当前问题的最佳方法。这应该是简单的 javascript,我不擅长。

最佳答案

我认为您正在寻找“ Canvas 外”侧边栏。这里有 2 个从左侧滑入的 Canvas 外 Bootstrap 示例。

http://www.bootstrapzero.com/bootstrap-template/off-canvas-sidebar http://www.bootstrapzero.com/bootstrap-template/facebook

两个示例都使用媒体查询来检测浏览器并相应地放置侧边栏。

关于javascript - 在 bootstrap3 中切换侧边栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21051340/

相关文章:

css - 有 3 个固定的列布局

python-sphinx - 使用“阅读文档”主题时如何将Sphinx生成的索引添加到侧栏?

javascript - 多级metis菜单项保持打开状态

javascript - Sails.js Socket.IO 使用时间范围窗口获取数据 (setInterval)

javascript - 检查两个变量是否未定义

javascript - 将我的列表 vom ng-repeat 更改为 collection-repeat 后 ng-click 无法正常工作

javascript - jQuery UI + Bootstrap 3 可排序 Accordion 无法正常工作

javascript - 如何在 Laravel 5.2 中使用 Bootstrap

html - 修复了侧边栏滚动无法正常工作的问题

javascript - 处置图像对象