9

请考虑这个小提琴:http: //jsfiddle.net/eKJAj/

我试图让一个绝对定位的 div (红线)取其(黄色)父级的总高度的整个高度;不仅仅是父母的可见高度。

如果您尝试使用小提琴,当您滚动黄色 div 时,您会看到红色条不会一直向下移动。如果删除了一些蓝色部分,它也不能大于其父级。

html:

<div class="parent">
    <div class="bar"></div>
    <div class="section"></div>
    <div class="section2"></div>
    <div class="section2"></div>
    <div class="section2"></div>
    <div class="section2"></div>
    <div class="section2"></div>
    <div class="section"></div>
</div>

<input type="button" value="hide" onclick="$('.section2').slideUp(400)" />
<input type="button" value="show" onclick="$('.section2').slideDown(400)" />

CSS:

.parent{
    position:relative;
    width:100%; max-height:300px;
    background-color:yellow;
    overflow-y:auto;
}

.bar{
    position:absolute; left:50px;
    width:1px; height:100%;
    background-color:red;
}

.section, .section2{
    width:100%; height:70px;
    margin-bottom:3px;
    background-color:blue;
}

我一直在为蓝条尝试一些选项,例如top:0px; botom:0px甚至尝试position:relative; margin-left:50px浮动红线,但无济于事。

如果可能的话,我宁愿只保留 CSS。任何提示非常感谢!

4

1 回答 1

9

一种解决方案是将您的包装.parent在(另一个)容器中。

JSF中。

将您.parent的容器设置为具有max-heightand overflow-y

<div class="container">
    <!-- parent in here -->
</div>

.container {
    max-height:300px;
    overflow-y:auto;
}
.parent{
    position:relative;
    width:100%;
    background-color:yellow;
}

它在您的示例中不起作用的原因是因为您将最大高度设置为 300px。100% 高度.bar然后假设高度为 300 像素。使用此解决方法,您的.parent分隔线没有 300 像素的高度限制,但外部却有.container

于 2013-03-06T09:23:20.713 回答