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

Posted

技术标签:

【中文标题】如何使父容器的高度设置为固定 px 高度和子内容高度之间的最大值?【英文标题】:How to make a parent container have its height set to the maximum value between a fixed px height and child content height? 【发布时间】:2021-12-03 08:40:17 【问题描述】:

如何让父容器满足以下条件:

    最大高度为 80vh 具有以下最大高度:a) 400 像素(或任何固定高度)b) 子内容的高度 子内容不能超出父容器 当子内容增长时,它们会继续增长,直到达到父级的最大高度 80%(然后滚动)

我已经有了 1、3 和 4 的逻辑。但我不确定如何实现第二个条件。这是我写的一些示例代码:

.parent 
  height: 400px;
  width: 80%;
  margin: 100px auto;
  max-height: 80vh;
  border: solid 5px black;
  overflow: scroll;


.child 
  border: solid 5px red;
  width: auto;
  height: 550px;
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link rel="stylesheet" href="styles.css" />
  </head>
  <body>
    <div class="parent">
      <div class="child"></div>
    </div>
  </body>
</html>

我想我正在寻找像 height: max(400px, max-content) 这样的东西。但这是可能的/我将如何实现这一点?任何想法将不胜感激!

【问题讨论】:

afak css 规则中没有 OR 选项,你玩过 min-content 和 max-content 吗? developer.mozilla.org/en-US/docs/Web/CSS/min-content 是的,我的意思是我希望父高度为(400px,最大内容)的最大值。但我不认为我们可以使用这样的最大内容,所以我想知道是否有其他方法来实现相同的逻辑。 【参考方案1】:

如果你删除父级的高度,父级会从子级获取高度,但不会超过80vh,这是父级的最大高度,所以如果子级高度大于80vh,父级会滚动其余身高的孩子。

【讨论】:

对不起,我的意思是当子内容高度是 0px 到 400px 之间的任何高度时,我希望父容器为 400px。所以我希望父容器的高度至少为 400px,除非 400px 大于 80vh(如果我们放大浏览器可能会发生这种情况) 改变高度:400px;最小高度:400px;在父母中 除非 400px 大于 80vh(如果我们放大浏览器可能会发生这种情况)。我认为在这种情况下最好使用响应式 CSS 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:

来自MDN:

最大高度覆盖高度,但最小高度覆盖最大高度。

因此,为了确保您的条件 1 始终满足(最大高度为 80vh),您不仅需要将 max-height 设置为该值,还必须确保如果 400px 大于 80vh,则高度不会消失80vh以上,否则会到400px,超过80vh的最大高度。

max-height: 80vh;
min-height: min(400px, 80vh);

【讨论】:

以上是关于如何使父容器的高度设置为固定 px 高度和子内容高度之间的最大值?的主要内容,如果未能解决你的问题,请参考以下文章

div css怎么让子容器超出父容器

css

CSS如何让父容器的高度随着子容器的内容而自动变化!~求解

如何使用 Dock Fill VB.NET 使父对象居中

获取height固定折叠元素真实高度方法

CSS清除浮动使父级元素展开的三个方法