可折叠的侧边栏,带有流畅的twitter引导程序

时间:2012-11-28 11:43:39

标签: jquery css twitter-bootstrap sidebar

我正在寻找一个CSS解决方案来创建一个按钮,使用twitter bootstrap打开和关闭侧边栏。

我喜欢人们在他们的网页上看到的一个小图标,当侧边栏关闭时,它们看起来像拉片,然后在拉出边栏时跟随边栏 - 这是否有名字?

我已经创建了一个toggleSidebar图标链接来执行此操作,但我有两个问题:

  1. 使用float:left或display:inline-block
  2. ,我无法使用侧边栏浮动它
  3. 已修复,它会创建一个自己的列...我希望它浮动在主要内容之上。
  4. html:

    <div class="container-fluid">
      <div class="row-fluid">
        <div id="sidebar" class="span3 scrollDiv" style="display: none;">
          <!--Sidebar content-->
        </div>
        <div id="content" class="span12">
          <!--Main content-->
        </div>
        <a id="toggleSidebar" href="#" class="toggles"><i class="icon-chevron-right"></i></a>
      </div>
    </div>
    

    css:

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

    javascript:

    function sidebar(panels) {
      if (panels === 1) {
        $('#content').removeClass('span9');
        $('#content').addClass('span12 no-sidebar');
        $('#sidebar').hide();
      } else if (panels === 2) {
        $('#content').removeClass('span12 no-sidebar');
        $('#content').addClass('span9');
        $('#sidebar').show();
      }
    }
    
    $('#toggleSidebar').click(function() {
      if ($.asm.panels === 1) {
        $('#toggleSidebar i').addClass('icon-chevron-left');
        $('#toggleSidebar i').removeClass('icon-chevron-right');
        return sidebar(2);
      } else {
        $('#toggleSidebar i').removeClass('icon-chevron-left');
        $('#toggleSidebar i').addClass('icon-chevron-right');
        return sidebar(1);
      }
    })
    

    这方面的一个工作示例:http://jsfiddle.net/amorris/dmyTR/

    对于我的生活,我无法在网上找到一个例子 - 但这里是我所追求的内容的快速绘图: Pull Bar

    有点像效果@ http://simplerealtytheme.com/plugins/pullout-widgets/ - 看起来他们正在使用display:block;明确:两者;然后将拉片绝对放置在具有负右位置的div内。

3 个答案:

答案 0 :(得分:32)

我认为这就是您想要的,请参阅here

相关代码是:

#content {
    float:left;
}

#mapCanvas img {
    max-width: none;
}

#maincont{
    margin-top: 42px;
}

#toggleSidebar {
    float:left;
    color:#779DD7;
    padding:2px 4px;
}

#sidebar{
    float:left;   
}

请确认这是您的想法!

答案 1 :(得分:15)

这是你的想法吗?

http://jsfiddle.net/dmyTR/37/

基本上,而不是.hide()和.show();你动画它的位置。

  // to hide 
  $('#sidebar').animate({
        left: -180,
  });

  // to show
  $('#sidebar').animate({
        left: 20,
  });

我从.container-fluid中删除了#sidebar,因为它不是容器的一部分。我还把#toggleSidebar放在#sidebar里面。

答案 2 :(得分:2)

这是我绘制的动画侧抽屉,需要很少的引导修改: http://zombiehippie.github.io/Side-drawer/

@media screen and (max-width: 768px) {
    /* this is container is moved to the side if class is added*/
    .side-collapse-container{
        width:100%;
        position:relative;
        left:0;
        transition:left .4s;
    }
    /* toggled when navbar is out */
    .side-collapse-container.out{
        left:200px;
    }
    .side-collapse {
        /* need top to keep from overlapping fixed header*/
        top:50px;
        bottom:0;
        left:0;
        width:200px;
        position:fixed;
        overflow:hidden;
        /* transition animates the element */
        transition:width .4s;
    }
    /* toggled when navbar is in */
    .side-collapse.in {
        width:0;
    }
}

使用.side-collapse样式的固定导航栏允许我们将条形图固定到屏幕边缘。

在标题之后将.side-collapse-container添加到容器允许在打开时转移内容。

某些脚本会将点击事件附加到[data-toggle=]选择器。

$(document).ready(function() {   
    var sideslider = $('[data-toggle=collapse-side]');
    var sel = sideslider.attr('data-target');
    var sel2 = sideslider.attr('data-target-2');
    sideslider.click(function(event){
        $(sel).toggleClass('in');
        $(sel2).toggleClass('out');
    });
});

查看源html或jade的github页面。

HTML源代码 https://github.com/ZombieHippie/Side-drawer/tree/gh-pages