我有一个问题,即div没有被剪切到父级,即使它有overflow: hidden
。
我已经在stackoverflow上查看了overflow: hidden
个问题,但是大多数问题要么出现问题position
,要么建议我的代码可以正常运行。
这是一个MWE,你可以找到 jsfiddle here :
<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
会导致滚动条。
#scroller
只使用#child
的高度并忽略overflow
个属性。
<div>
中有多个#parent
,所以我无法给#scroller
一个高度。#scroller
。感谢您的帮助, 斯蒂芬
display: flex
的评论中实际上只有一个CSS答案。参见:
https://jsfiddle.net/huocukw7/6/
#parent {
height: 500px;
overflow: hidden;
display: flex;
flex-direction:column;
}
#scroller {
overflow: auto;
flex-grow:1;
}
#child {
height: 10000px;
}
答案 0 :(得分:9)
您只需向height
#scroller
即可
#scroller {
overflow: scroll;
padding: 10px;
background-color: red;
height: 100%;
}
根据你的观点 - 在我的真实世界问题中,#parent中有多个s,所以我不能给#scroller一个高度。
没有其他方法可以让它在不指定height
的情况下滚动。没有它,它将延伸直到子元素结束,这不会使您的包装器可滚动。
您可以在此处使用JavaSript来计算运行时的height
并将其附加到元素。
答案 1 :(得分:1)
display: flex
的评论中实际上只有一个CSS答案。参见:
https://jsfiddle.net/huocukw7/6/
#parent {
height: 500px;
overflow: hidden;
display: flex;
flex-direction:column;
}
#scroller {
overflow: auto;
flex-grow:1;
}
#child {
height: 10000px;
}
答案 2 :(得分:0)
虽然您说无法为#scroller添加显式高度,但添加height:inherit;
会怎么样。这具有添加滚动条所需的效果。
答案 3 :(得分:0)
对于后代 - 我使用基金会的Reveal
叠加层也遇到了同样的问题。
body.is-reveal-open
有overflow: hidden;
.reveal-overlay
有overflow-y: scroll;
(&lt; - 这是罪魁祸首)
我想要有一个滚动条的子元素有一个明确的高度,一个较小的最大高度和overflow: scroll
。
经过大量调试后,我缩小了问题的范围,最终解决了问题:
.reveal-overlay {
overflow: hidden; // changed from overflow-y: scroll
}
不要问我为什么会这样,我不知道。但确实如此。
答案 4 :(得分:0)
这里是Bootstrap 4用户的解决方案,您只需要关心如何将正确的Flex相关类放在正确的位置即可。由于parent
只有1个直属子,因此非常简单:
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>
的剩余高度,那么您将需要应用{{1} }类,而不是flex-grow-1
的{{1}}类。 (对于熟悉android开发的人来说,h-100
在约束布局中的作用与scroller
或flex-grow-1
相似)