【问题标题】:child div height 100% inside position: fixed div + overflow auto子 div 高度 100% 内部位置:固定 div + 溢出自动
【发布时间】:2013-02-14 20:50:00
【问题描述】:

我在尝试以下操作时遇到了一些奇怪的行为(请参阅 jsfiddle:http://jsfiddle.net/9nS47/)。

HTML:

<div id="slider">
    <div id="wrapper">
        <div id="navigation"></div>
        <div id="container">
            <div id="button"></div>
        </div>
    </div>
</div>

CSS:

HTML,BODY 
{ width:100%; height:100%; }
* { margin: 0; padding: 0; }
#slider
{
    position: fixed;

    top: 0;
    bottom: 0px;
    left: 100px;

    overflow-y: auto;

    background-color: red;
}

#wrapper
{
    position: relative;

    height: 100%;

    background-color: #000000;

    min-height:400px;
}

#navigation
{
    display: inline-block;
    width: 80px;
    height: 100%;

    background-color: #0000FF;
}

#container
{
display: inline-block;
    height: 100%;

    background-color: #00FF00;
}

#button
{
    width: 22px; height: 100%;
    float:right;

    background-color: #CCFFCC;
    cursor:pointer;
}

我要做的是制作一个左侧导航栏,该导航栏跨越整个可见窗口高度,并且仅在其高度小于例如 400 像素时才显示滚动条。由于一些调整大小问题,该 div 的滚动条似乎始终可见(底部有一个额外的像素,我无法解释 [color:red])。

当滚动条可见时,Firefox 也会将第二个子元素移到第一个子元素的下方,因为滚动条似乎是内容区域的一部分,因此占用了大约 20 像素的空间。如果将 Overflow: Auto 替换为 Overflow: scroll 则不会发生这种情况。

ATM 更改布局(特别是位置固定的容器)不是一种选择。

不要介意绿色和蓝色框之间的空间。似乎是空格问题。

【问题讨论】:

  • 如果你使用一点 javascript 或 jQuery 会有什么影响吗?如果你这样做了,那就行了。
  • 感谢您的回答,我可以使用 Javascript 或 jQuery 来解决问题。

标签: html css position overflow fixed


【解决方案1】:

由于您似乎无法对“包装”代码进行太多更改,因此我尝试尽可能少地更改您的原始代码。事实上,我唯一做的就是添加一些 jQuery。

查看this updated jsfiddle。我已经包含了 jQuery,我添加的 javascript 是这样的:

$(window).bind("load resize", function(){  
     //this runs as soon as the page is 'ready'
    if($(window).height() < 400){        
        $("#slider").css("overflow-y","scroll");
    }else{        
        $("#slider").css("overflow-y","hidden");   
    }  
});

基本上,'onload' 和 'onrezise',jQuery 会判断你是否应该显示滚动条。

“自动”不起作用的原因是 slider 元素的“固定”位置。浏览器无法完美计算高度。

【讨论】:

  • 谢谢,效果很好。很抱歉我不能投票,因为我没有足够的声誉,但我稍后会赶上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 2013-12-08
  • 1970-01-01
  • 2021-03-04
  • 2020-05-06
  • 1970-01-01
相关资源
最近更新 更多