CSS:固定/固定顶部菜单栏

时间:2014-11-15 01:37:31

标签: html css

我在SO上阅读了很多关于此事的问题,但没有找到我真正想要的东西。我在下面有简单的HTML和CSS代码。我想要做的是将滚动条仅放在“left_content”DIV上。正如您在示例中看到的那样,它在“左”DIV上。如果我将CSS中的“scroll:auto”从#left移动到#left_content,则右侧会出现滚动条。这是为什么?以及如何将滚动条放在#left_content上。感谢。

<style>
  #left{float:left; width:50%; height:100%; overflow:auto;}
  #right{float:left; width:50%; height:100%;}  
  #left_menu{width:100%;}
  #left_content{width:100%;}
  .clear{clear:both;}
</style>
<div id="left">
  <div id="left_menu">
  menu point 1 | menu point 2 | menu point 3
  </div>
  <div id="left_content">
    1 <br / >2 <br / >3 <br / >4 <br / >5 <br / >6 <br / >7 <br / >8 <br / >9 <br / >10 <br / >11 <br / >12 <br / >13 <br / >14 <br / >15 <br / >16 <br / >17 <br / >18 <br / >19 <br / >20 <br / >21 <br / >22 <br / >
    1 <br / >2 <br / >3 <br / >4 <br / >5 <br / >6 <br / >7 <br / >8 <br / >9 <br / >10 <br / >11 <br / >12 <br / >13 <br / >14 <br / >15 <br / >16 <br / >17 <br / >18 <br / >19 <br / >20 <br / >21 <br / >22 <br / >
    1 <br / >2 <br / >3 <br / >4 <br / >5 <br / >6 <br / >7 <br / >8 <br / >9 <br / >10 <br / >11 <br / >12 <br / >13 <br / >14 <br / >15 <br / >16 <br / >17 <br / >18 <br / >19 <br / >20 <br / >21 <br / >22 <br / >
  </div>
</div>
<div id="right">
 Some other content that is adjusted so that there is no scrolling needed.
</div>
<div class="clear"></div>​

2 个答案:

答案 0 :(得分:1)

您需要做的第一件事是向左侧div添加特定高度,例如:

#left { height: 300px; }

请注意,您无法在此处使用百分比。像素,Ems或任何特定单位都可以使用。现在让左边的内容占据其中的一部分,并告诉它滚动:

#left_content { 
    height: 90%;
    overflow: scroll;
}

这就是它。在此示例中效果很好:http://jsfiddle.net/kubqrvrk/5/

答案 1 :(得分:1)

右侧出现的滚动条背后的原因仅代表左侧div,因为您将左右两侧的高度设置为100%。出现的滚动条不适用于正确的div,而是适用于正文/文档。

当您拥有固定高度时,溢出css效果最佳。如果您仍然需要100%的高度,我们可以包括:

#left { max-height: 500px;}

如果你需要将左边div的高度设置为窗口高度,可以使用JS。

$('#left').css('max-height',$(window).height());

JSfiddle:http://jsfiddle.net/h4adr4qs/

或使用新的css视口值:

#left {max-height:100vh;}

我不确定有多少浏览器支持&#39; vh&#39;单位。但我很确定很快就会成为标准。

如果您需要固定菜单但只需要#left_content滚动,则需要将max-height设置为该div,

#left_content { max-height: 500px;overflow:scroll}

如果您这样做,请从#left css

中删除overflow属性