有一个固定的位置div,如果内容溢出需要滚动

实际上我有两个问题,但我们先解决主要问题,因为我相信其他问题更容易解决。

我在菜单的左侧有一个固定的位置div。 右侧是正确滚动的标准div。 问题是,当浏览器视图端口太小,看不到整个菜单..没有办法让它滚动,我可以find(至less不是用CSS)。 我试过在CSS中使用不同的溢出,但没有任何东西让div滚动。 包含菜单的div设置为最小高度:100%,位置:固定..这两个属性我需要保持。

包含菜单的div是在另一个绝对定位的高度设置为100%的包装div。

如果内容对于div太高,我怎样才能让它垂直滚动?

这导致我到另一个问题,我不希望滚动条显示..但我想我可能已经有一个答案(只有它不工作,因为我不能让div滚动开始)。

任何解决scheme 也许JavaScript是必要的? (其中我知之甚less)

JS小提琴示例

以及导致问题的相关代码(因为在这里发布整个事情waaay太长了):

.fixed-content { min-height:100%; position:fixed; overflow-y:scroll; overflow-x:hidden; } 

也尝试添加高度:100%以及只是为了看看这是一个问题,但它也没有工作…也没有固定的高度,如600px。

我知道这是一个古老的问题,但我只是想把这个答案放在那里。

使用高度:100%的问题是它将是100%的页面,而不是100%的窗口(正如你可能会期望的那样)。 这会导致你看到的问题,因为非固定的内容足够长,包括100%高度的固定内容,而不需要滚动条。 浏览器不知道/关心你实际上不能滚动栏来查看它

但是,由于修复了属性,所以可以这样做,并完成您正在尝试的操作:

 .fixed-content { top: 0; bottom:0; position:fixed; overflow-y:scroll; overflow-x:hidden; } 

这是你的jsfiddle的一个分支来显示我的修复工作: http : //jsfiddle.net/strider820/84AsW/1/

这里有两个修复程序。

首先,关于固定的侧边栏,你需要给它一个溢出的高度:

HTML代码:

 <div id="sidebar">Menu</div> <div id="content">Text</div> 

CSS代码:

 body {font:76%/150% Arial, Helvetica, sans-serif; color:#666; width:100%; height:100%;} #sidebar {position:fixed; top:0; left:0; width:20%; height:100%; background:#EEE; overflow:auto;} #content {width:80%; padding-left:20%;} @media screen and (max-height:200px){ #sidebar {color:blue; font-size:50%;} } 

现场示例: http : //jsfiddle.net/RWxGX/3/

如果你的内容溢出div的高度,不可能不滚动滚动条。 这就是为什么我添加了屏幕高度的媒体查询。 也许你可以调整你的风格的短小的屏幕尺寸,所以滚动不需要出现。

欢呼声,伊格纳西奥