【问题标题】:Making a sidebar always 100% height使侧边栏始终为 100% 高度
【发布时间】:2014-06-27 10:44:03
【问题描述】:

我设计了一个网站,如下所示,它有一个 FIXED 标题(白色),然后是一个子标题、主要内容、侧边栏(红色)和一个页脚(灰色)。

我已经用 HTML/CSS 为网站创建了线框,但无法让侧边栏正常工作。

我希望侧边栏从子标题开始,一直到页面底部,在页脚之后结束(见下图),不管主要部分有多少内容,但是我无法让它工作。

请帮忙!这是我目前在 JSFIDDLE 上所做的工作,您可以看到侧边栏没有转到页面底部:http://goo.gl/EQ7CJh

【问题讨论】:

  • CSS Sidebar Height 100%的可能重复
  • 当主要内容大于页面时,您希望垂直滚动条出现在哪里?在主要内容和侧边栏之间或从侧边栏的右侧,简单地说你想要一种“粘性”侧边栏,无论垂直滚动条在哪里,它总是可见的?

标签: html css web sidebar


【解决方案1】:

从内容div中去掉position: relative,使用margin-top定位面板,如图:

#content {
    height: 100%;
}
#sidebar {
    border: 1px solid skyblue;
    width: 100px;
    position: absolute;
    margin-top:7em;
    top: 0px;
    right:0px;
    bottom: 0px;
}

Updated jsfddle

【讨论】:

  • 嗨,谢谢,但这并不能达到我想要达到的目的。我需要它保持在“maxwidth”类中,并且除了页脚之外,它还需要越过子标题。
  • 我不知道你为什么需要这个限制:保持在“maxwidth”类中,即你的意思是什么?否则,可以通过上面的示例实现所需的效果。这里jsfiddle.net/ZrnAg/3我把主要内容做的够大了,侧边栏依然占据了从子页眉到页脚的区域。
【解决方案2】:

你可以试试这个 jsFiddle http://jsfiddle.net/2ZhpH/1093/

我已经更改了 HTML 结构并将#sidebar css 添加到此

#sidebar {
 position:absolute;
 top:48px;
 border: 1px solid skyblue;
 width: 100px;
 position: absolute;
 right: 0;
 bottom: 0px;
}

【讨论】:

  • 谢谢,但这也不太有效。它越过了副标题,这很好,但是如果主位中有很多内容,则侧边栏不会全高。它也不在必要的“最大宽度”范围内
  • jsfiddle.net/2ZhpH/1094 检查这个。只需将侧边栏 div 添加到顶部,然后添加一些 lorem 文本
  • 如果你想让它成为静态的,也可以尝试添加位置:固定侧边栏
【解决方案3】:

Demo

如果你想在包含 sub-header main 和 footer 的 div 旁边有侧栏,你应该有一个像这样的 Grid 结构

<div id="header" class="...">
</div>
<div class="divide"> <!-- divide class to have like 85% width leaving rest of it for side bar -->
   <div class="sub-header">
   </div>
   <div class="main">
   </div>
   <div id="footer">
   </div> 
</div>
  <div class="sidebar">
  </div>

【讨论】:

  • 您好,恐怕这也行不通,它需要像图片一样通过子右侧到达页脚。而且页脚现在不在底部。不过谢谢
  • @user3782712 我更新了小提琴,相应地调整了侧边栏的高度
猜你喜欢
  • 1970-01-01
  • 2016-05-11
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 2014-04-19
  • 2013-09-07
相关资源
最近更新 更多