我有两个子div嵌套在一个父div的行列模式:父级是列,子级是行。
上面的子div的高度是可变的,但保证小于父div的高度。
下面的子div也是可变高度的。在某些情况下,子div的高度会使较低的子div超过父div。在本例中,我需要使下面的div可滚动。请注意,我只希望较低的div是可滚动的,而不是整个父div。
我该怎么处理?
案例示例参见随附的jsfiddle:http://jsfiddle.net/0yxnaywu/5/
HTML:
<div class="parent">
<div class="child1">
hello world filler
</div>
<div class="child2">
this div should overflow and scroll down
</div>
</div>
CSS:
.parent {
width: 50px;
height: 100px;
border: 1px solid black;
}
.child1 {
background-color: red;
}
.child2 {
background-color: blue;
}
4条答案
按热度按时间68de4m5k1#
因为这篇文章在Google的排名仍然很高,我想用flexbox发布一个更好的解决方案。其实这很简单。使用显示:flex,flex-direction:列和溢出:hiddenfor parent和overflow-y:自动为孩子。
这是笔:https://codepen.io/pawelsas/pen/vdwjpj
xwmevbvl2#
溢出仅在您为它指定一个值以在大于时溢出时起作用。你的值是相对于顶部的大小,所以使用jQuery,获取该值,然后从父对象中减去。
并将
overflow
添加到子节点http://jsfiddle.net/m9goxrbk/
w80xi6nr3#
使用
overflow
属性:jsFiddle
如果你只想让第二个div可以滚动,你需要将它的高度改为
30px
,这样child1
和child2
就可以完全适应父级height
,并在那里添加overflow
属性:jsFiddle
2w2cym1i4#
嵌套子div时
这种解决方案是滚动溢出的子div,而不是在嵌套div时滚动整个父div。
请参阅随附图片。预期的行为在右侧??
将下面的CSS添加到所有需要将滚动条向下传递到可滚动子对象的父div(
Parent
,Child1
,Child2
)中。(flex列使div采用可用高度)溢出的目标元素(
Child 3
)应该被分配overflow: auto
以启用滚动。**注意:**需要为最上面的父节点指定固定高度(
Parent
),才能滚动子节点,否则滚动父节点。Open in Stackblitz