[英]Overflow hidden with nested overflow scroll not working
我有一个问题,即div没有被剪切到父级,即使它有overflow: hidden
。
我已经查看了overflow: hidden
这里有关于stackoverflow的overflow: hidden
问题,但是大多数问题都有position
问题或似乎暗示我的代码应该有效。
这是一个MWE,你可以在这里找到jsfiddle :
<div id="parent">
<div id="scroller">
<div id="child">
meh
</div>
</div>
</div>
CSS:
#parent {
height: 500px;
overflow: hidden;
}
#scroller {
overflow: scroll;
}
#child {
height: 10000px;
}
#parent
有overflow: hidden
因此#scroller
被剪裁到父级的高度。 因为它的#child
比生成的高度overflow: scroll
高overflow: scroll
导致滚动条。
#scroller
才用高度#child
而忽略两者overflow
性。
#parent
有多个<div>
,所以我不能给#scroller
一个高度。 #scroller
。 谢谢你的帮助,Stefan
在评论中实际上只有一个CSS-only答案, display: flex
。 看到:
https://jsfiddle.net/huocukw7/6/
#parent {
height: 500px;
overflow: hidden;
display: flex;
flex-direction:column;
}
#scroller {
overflow: auto;
flex-grow:1;
}
#child {
height: 10000px;
}
您需要做的就是为#scroller
提供height
#scroller {
overflow: scroll;
padding: 10px;
background-color: red;
height: 100%;
}
按照你的观点 - 在我的真实世界问题中,#parent中有多个s,所以我不能给#scroller一个高度。
如果没有为其指定height
,没有其他方法可以使其可滚动。 如果没有它,它将延伸直到子元素结束,这将不会使您的包装器可滚动。
您可以在此处使用JavaSript来计算运行时的height
并将其附加到元素。
在评论中实际上只有一个CSS-only答案, display: flex
。 看到:
https://jsfiddle.net/huocukw7/6/
#parent {
height: 500px;
overflow: hidden;
display: flex;
flex-direction:column;
}
#scroller {
overflow: auto;
flex-grow:1;
}
#child {
height: 10000px;
}
虽然你说你不能为#scroller添加一个显式高度,但是添加height:inherit;
怎么样height:inherit;
。 这具有添加滚动条的期望效果。
对于后代 - 我使用Foundation的Reveal
叠加层也有同样的问题。
body.is-reveal-open
overflow: hidden;
.reveal-overlay
有overflow-y: scroll;
(< - 这是罪魁祸首)
我希望有一个滚动框的我的子元素有一个很大的显式高度,一个较小的最大高度和overflow: scroll
。
经过大量调试后,我缩小了问题的范围,最终解决了这个问题:
.reveal-overlay {
overflow: hidden; // changed from overflow-y: scroll
}
不要问我为什么这样,我不知道。 但确实如此。
这是Bootstrap 4用户的解决方案,您需要关注的只是如何将正确的Flex相关类放在正确的位置。 由于parent
只有一个直接孩子,所以很简单:
HTML
<div class="d-flex flex-column" id="parent">
<div class="h-100" id="scroller">
<div id="child">
meh
</div>
</div>
</div>
CSS (你不需要用CSS做任何事情,我只是从问题中复制它)
#parent {
height: 500px;
overflow: hidden;
}
#scroller {
overflow: scroll;
}
#child {
height: 10000px;
}
还有一个提示:如果您在parent
下有多个直接子级并且需要scroller
来填充parent <div>
的剩余高度,那么您需要将flex-grow-1
类而不是h-100
应用于scroller
。 (对于那些谁熟悉Android的发展, flex-grow-1
具有与类似的效果layout_height=0dp
或layout_width=0dp
在constraintlayout)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.