【问题标题】:overflow auto doesn't work in child element when parent has fixed size当父元素具有固定大小时,溢出自动在子元素中不起作用
【发布时间】:2018-06-13 01:11:33
【问题描述】:

我创建了一个包含 2 个孩子的固定大小的父 div,但我希望只有第二个有 overflow: auto;

不幸的是,它没有按预期工作......

这是我的sn-p:

.parent
{
	height: 200px;
	width: 100px;
	background-color: #F00;
	padding: 10px;
}

.second-child
{
	overflow: auto;
}
<div class="parent">
	<div class="first-child">
		Some content
	</div>
	<hr />
	<div class="second-child">
		"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
	</div>
</div>

有什么想法吗?

【问题讨论】:

  • 你没有给孩子任何尺寸,所以它不会溢出 - 给它一个 100% 的最大高度,它应该可以工作

标签: html css overflow


【解决方案1】:

您可以使用max-height CSS 属性。在max-height 的帮助下,您可以设置最大高度。如果内容超过最大高度,将自动进行 Y 滚动。

代码

.parent
{
	height: 200px;
	width: 100px;
	background-color: #F00;
	padding: 10px;
}

.second-child
{
	overflow: auto;
        max-height:100px
}
<div class="parent">
	<div class="first-child">
		Some content
	</div>
	<hr />
	<div class="second-child">
		"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
	</div>
</div>

【讨论】:

  • 请提供一些解释,而不仅仅是发布代码。
  • @AndyG 很抱歉没有解释地回答这个问题。答案已被编辑。
  • 但是我需要第二个孩子来填充第一个孩子留在父母身上的剩余空间,同时 idk 它的高度。将第二个孩子设置为固定大小不会像我想要的那样工作。
  • @StyleSh1t 同时你可以阅读这个stackoverflow.com/a/44156191/6821441
  • @StyleSh1t css-tricks.com/forums/topic/… 看看这个
【解决方案2】:

您应该在溢出开始之前设置一个最大值...

编辑: 将 max-height 设置为 % 以便它始终满足您不断变化的需求。我在这里保留了 80%,因为它很好地适应了二胎

.second-child
{
  max-height: 80%;
    overflow: auto;
}

现在应该好了!

.parent
{
	height: 200px;
	width: 100px;
	background-color: #F00;
	padding: 10px;
}

.second-child
{
  max-height: 80%;
	overflow: auto;
}
<div class="parent">
	<div class="first-child">
		Some content
	</div>
	<hr />
	<div class="second-child">
		"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
	</div>
</div>

【讨论】:

  • 参考我对@Abhishek Ekaanth 的评论
  • 希望根据您的要求更改...:D
  • @NikhilEshvar 他只是说他不知道任何一个 div 的高度
  • 这就是为什么我将它设置为百分比,以便它根据内容的大小进行调整
【解决方案3】:

更新:

定义一个max-height 告诉浏览器在多长时间后溢出会发生

更新 2:

  1. 使容器成为表格
  2. 制作另外 2 个 div 的表格行
  3. 在第 2 个 div 中,将文本置于绝对位置之后的相对位置

.parent {
  height: 200px;
  width: 100px;
  background-color: #F00;
  padding: 10px;
  display: table;
}

.first-child,
.second-child {
  display: table-row;
}

.second-child {
  height: 100%;
}

.second-child-content-wrapper {
  position: relative;
  width: 100%;
  height: 100%;
}

.second-child-content {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  overflow: auto;
}
<div class="parent">
  <div class="first-child">
    Some content
  </div>
  <hr />
  <div class="second-child">
    <div class="second-child-content-wrapper">
      <div class="second-child-content">
        "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
        in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
      </div>
    </div>
  </div>
</div>

【讨论】:

  • 你在计算中放置了一个固定的高度(25px)。当我知道第一个孩子的身高时如何避免它?
  • 更新了答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多