修复了流体推特引导程序 2.0 中的侧边栏导航

Posted

技术标签:

【中文标题】修复了流体推特引导程序 2.0 中的侧边栏导航【英文标题】:Fixed sidebar navigation in fluid twitter bootstrap 2.0 【发布时间】:2012-03-10 04:26:20 【问题描述】:

是否可以让侧边栏导航在流畅布局中始终固定在滚动条上?

【问题讨论】:

【参考方案1】:

注意: 有一个引导 jQuery 插件可以执行此操作,并且在编写此答案(大约两年前)后的几个版本中引入了更多功能,称为 Affix。此答案仅适用于您使用的是 Bootstrap 2.0.4 或更低版本。


是的,只需为您的侧边栏创建一个新的固定类,并在您的内容 div 中添加一个偏移类以弥补左边距,如下所示:

CSS

.sidebar-nav-fixed 
    padding: 9px 0;
    position:fixed;
    left:20px;
    top:60px;
    width:250px;


.row-fluid > .span-fixed-sidebar 
    margin-left: 290px;

演示:http://jsfiddle.net/U8HGz/1/show/ 在这里编辑:http://jsfiddle.net/U8HGz/1/

更新

修复了我的演示以支持响应式引导表,现在它与引导的响应式功能一起流动。

注意:此演示使用顶部固定导航栏流动,因此屏幕调整大小时两个元素都变为position:static,我在下方放置了另一个演示,该演示保持固定侧边栏,直到屏幕下降以用于移动视图。

CSS

.sidebar-nav-fixed 
     position:fixed;
     top:60px;
     width:21.97%;
 

 @media (max-width: 767px) 
     .sidebar-nav-fixed 
         width:auto;
     
 

 @media (max-width: 979px) 
     .sidebar-nav-fixed 
         position:static;
        width: auto;
     
 

HTML

<div class="container-fluid">
<div class="row-fluid">
 <div class="span3">
   <div class="well sidebar-nav sidebar-nav-fixed">
    ...
   </div><!--/.well -->
 </div><!--/span-->
 <div class="span9">
    ...
 </div><!--/span-->
</div><!--/row-->

</div><!--/.fluid-container-->

Demo,编辑here。

小注意:固定侧边栏的宽度大约有 10px/1% 的差异,这是因为它没有从 span3 容器 div 继承宽度,因为它是固定的 i必须想出一个宽度。已经够近了。

如果您想在小屏幕/移动视图的网格下降之前保持侧边栏固定,这是另一种方法。

CSS

.sidebar-nav-fixed 
    position:fixed;
    top:60px;
    width:21.97%;


@media (max-width: 767px) 
    .sidebar-nav-fixed 
        position:static;
        width:auto;
    


@media (max-width: 979px) 
    .sidebar-nav-fixed 
        top:70px;
    

Demo,编辑here。

【讨论】:

对于 Chrome 和 Firefox 上的我来说,那个小提琴总是有一个低于约 1,016 像素宽度的水平滚动条 (Chrome)。 (在这里更容易看到:jsfiddle.net/U8HGz/130/show 只是 /1,但在“Hello World;我不知道 /2 - /129 是什么”下方显示窗口宽度和高度。) @T.J.Crowder 这是由于 margin-left:290px 类上的 margin-left:290px 声明为侧边栏让路,如果它不存在,内容将与小屏幕上的侧边栏重叠。您可以通过在body 标签上显式隐藏它来消除水平滚动条,如下所示:body overflow-x: hidden; 谢谢。这可能适用于媒体查询或其他东西(所以它存在于 really 窄窗口上);但到那时,可能还是想重新定位侧边栏。 @mauris 修复了我的演示,支持引导程序的响应功能。 @miguelcobain 这里是fixed version,虽然没有经过全面测试,但在我的测试环境下工作得很好。另一种解决方案是使用affix 引导插件,它为引导程序上的固定部分带来了本机支持......这个解决方案是在我们没有的时候编写的。【参考方案2】:

最新的 Boostrap (2.1.0) 具有专门针对此类应用程序的新 JS“附加”功能,仅供参考。

【讨论】:

@AlexanderRechsteiner 不是。 OP 特别提到了 Bootstrap 2.0。【参考方案3】:

这将搞砸响应式网页设计。 更好地将固定侧边栏包装在媒体查询中。

CSS

@media (min-width: 768px)  
  .sb-fixed
    position: fixed;
   

HTML

<div class="span3 sb-fixed">
   <div class="well sidebar-nav">
      <!-- Sidebar Contents -->
   </div>
</div>

现在侧边栏是固定的,如果视点大于 768px。

【讨论】:

【参考方案4】:

如果没有 javascript,这是不可能的。我觉得 affix.js 太复杂了,所以我宁愿使用:

stickyfloat

【讨论】:

【参考方案5】:

我从 Andres 的答案开始,最后得到一个像这样的粘性侧边栏:

html

<div class="span3 sidebar-width">
  <div class="well sidebar-nav-fixed">
    Sidebar
  </div>
</div>

<div class="span9 span-fixed-sidebar">
  Content
</div> <!-- /span -->

CSS:

.sidebar-nav-fixed 
  position:fixed;

JS/jQuery:

sidebarwidth = $(".sidebar-width").css('width');
$('.sidebar-nav-fixed').css('width', sidebarwidth);
contentmargin = parseInt(sidebarwidth) + 60;
$('.span-fixed-sidebar').css('marginLeft', contentmargin);

我假设在调整视口大小时我还需要 JS 来更新“sidebarwidth”变量。

【讨论】:

【参考方案6】:

很容易获得修复导航或您想要的所有标签。你只需要像这样写你的修复标签,然后把它放在你的正文部分

   <div style="position: fixed">
       test - try  scroll again. 
   </div>

【讨论】:

【参考方案7】:

在当前的 Bootstrap 版本 (3.3.2) 中,有一种很好的方法可以实现固定侧边栏进行导航。

此解决方案也适用于重新引入的 container-fluid 类,这意味着可以轻松实现响应式全屏布局。

通常您需要使用固定宽度和边距,否则导航会与内容重叠,但在空占位符列的帮助下,内容始终位于正确的位置。

当您将窗口大小调整为小于 768 像素并释放固定导航时,以下设置会环绕内容。

有关工作示例,请参阅 http://www.bootply.com/ePvnTy1VII。

CSS

@media (min-width: 767px)  
    #navigation
        position: fixed;
    

HTML

<div class="container-fluid">
 <div class="row">
  <div id="navigation" class="col-lg-2 col-md-3 col-sm-3">
    <ul>
      <li><a href="#">Link 1</a></li>
      <li><a href="#">Link 1</a></li>
      <li><a href="#">Link 1</a></li>
    </ul>
  </div>

  <div class="col-lg-2 col-md-3 col-sm-3 hidden-xs">
    <!-- Placeholder - keep empty -->
  </div> 

  <div id="main" class="col-lg-10 col-md-9 col-sm-9 fill">
     ...
     Huge Content
     ...
  </div> 
 </div>
</div>

【讨论】:

以上是关于修复了流体推特引导程序 2.0 中的侧边栏导航的主要内容,如果未能解决你的问题,请参考以下文章

使用引导程序修复导航栏

带有导航栏徽标的引导程序 [重复]

单击导航抽屉引导程序时未显示侧导航栏

引导侧边栏导航菜单滚动到活动面板标题的顶部

尝试使用引导程序 4 重新创建导航栏

在引导程序中的导航栏上方自动隐藏警报