子高度为可滚动父内容高度的 100%

Posted

技术标签:

【中文标题】子高度为可滚动父内容高度的 100%【英文标题】:Child height to be 100% of scrollable parent content height 【发布时间】:2013-02-20 23:46:18 【问题描述】:

请考虑这个小提琴: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:0pxposition:relative; margin-left:50px,甚至尝试浮动红线,但无济于事。

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

【问题讨论】:

看看你是否可以jsfiddle.net/eKJAj/14虽然我不是HTML专家 不,抱歉,您似乎刚刚缩小了该部分,因此父 div 不必滚动。不幸的是,父 div 内可能有很多部分,所以它必须滚动。不过谢谢! 【参考方案1】:

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

JSFiddle.

.parent 的容器设置为具有max-heightoverflow-y

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

.container 
    max-height:300px;
    overflow-y:auto;

.parent
    position:relative;
    width:100%;
    background-color:yellow;

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

【讨论】:

我会在.parent 中添加.container,但这没什么区别。 这太棒了!我认为添加包装器似乎可以解决许多常见的 CSS 问题是不是错了?下次我会记住这一点!非常感谢

以上是关于子高度为可滚动父内容高度的 100%的主要内容,如果未能解决你的问题,请参考以下文章

div随内容调整高度(父元素高度随子元素变化)

为固定的 100% 高度 div 创建可滚动内容

如何使父容器的高度设置为固定 px 高度和子内容高度之间的最大值?

前端父元素的height是auto,子元素怎么高度100%取不到高度怎么办呢?

两个垂直子元素需要适合父元素的 100% 高度,都是动态高度

如何根据子 SVG 内容对齐父 div 高度