CSS高度100%没有填充父级高度的100%[重复]

mzmfm0qo  于 2023-10-21  发布在  其他
关注(0)|答案(2)|浏览(140)

这个问题已经有答案了

Why does height: 100% on a child element not apply when the parent element has a min-height/max-height value but no height value?(1个答案)
2天前关闭。
我有一个高度为250px的父div。然后我有几个孩子,并将他们的最小身高设置为100%。我可以从调试器中看出选择器是正确的,并选择了正确的元素,但高度根本没有填满父元素的高度,而是在内容允许的范围内最小。

:root {
        --poke-main: #e05e8e;
        --poke-secondary: #f5ecc5;
        --poke-tertiary: #b5255a;
    }

    .card {
        border-color: var(--poke-tertiary);
    }

    .poke_tab {
        border-radius: .25rem;
        background-color: var(--poke-main);
        color: var(--poke-secondary);
        min-height: 100%;
    }

    #carousel {
        min-height: 250px;
        background-color: yellow;
    }

    .poke_container, .carousel-inner, .poke_tab, .poke_tab .card {
        min-height: 100%;  /* This doesn't work */
    }

    .poke_container .card {
        background-color: var(--poke-secondary);
        color: var(--poke-tertiary);
    }
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

<div id="carousel" class="col-lg-10" >

  <!-- Infobox -->
  <div class="poke_container">
    <div class="carousel-inner">
      <!-- Log Tab -->
      <div class="poke_tab p-2">
        <div class="card">

          test

        </div>
      </div>
    </div>
  </div>
</div>
8fq7wneg

8fq7wneg1#

这是因为父元素没有定义的高度。
当您设置min-height时:100%,它只会在其父元素具有特定高度集时占用可用高度。
在本例中,父元素(如.poke_container.carousel-inner)没有定义高度,因此min-height: 100%属性无法按预期工作。

<!DOCTYPE html>
<html>
<head>
  <style>
    :root {
      --poke-main: #e05e8e;
      --poke-secondary: #f5ecc5;
      --poke-tertiary: #b5255a;
    }

    #carousel {
      min-height: 250px;
      background-color: yellow;
      position: relative; /* Added */
    }

    .poke_container {
      position: absolute; /* Added */
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      display: flex;
    }

    .carousel-inner {
      flex: 1;
      display: flex;
    }

    .poke_tab {
      border-radius: .25rem;
      background-color: var(--poke-main);
      color: var(--poke-secondary);
      flex: 1;
      display: flex;
    }

    .poke_tab .card {
      background-color: var(--poke-secondary);
      color: var(--poke-tertiary);
      border-color: var(--poke-tertiary);
      height: 100%;
      width: 100%; /* Added */
    }
  </style>
</head>
<body>
  <div id="carousel" class="col-lg-10">
    <div class="poke_container">
      <div class="carousel-inner">
        <div class="poke_tab p-2">
          <div class="card">
            test
          </div>
        </div>
      </div>
    </div>
  </div>
</body>
</html>
rkue9o1l

rkue9o1l2#

您所面临的子元素没有填充父元素高度的问题可能是由于使用了min-height: 100%。当使用min-height时,它将采用指定高度或父高度的100%中的最大值。如果子对象内部的内容不需要完整的高度,它就不会展开来填充它。
要确保子元素占据父元素的整个高度,您可以使用CSS flexbox或网格布局。下面是一个如何使用flexbox修改代码的示例:

#carousel {
    min-height: 250px;
    background-color: yellow;
    display: flex; /* Use flex container */
    flex-direction: column; /* Stack children vertically */
}

.poke_container {
    flex: 1; /* Fill available vertical space */
    display: flex; /* Use flex container */
    flex-direction: column; /* Stack children vertically */
}

在HTML结构中,子元素不需要min-height: 100%

<div id="carousel" class="col-lg-10">
  <div class="poke_container">
    <div class="carousel-inner">
      <div class="poke_tab p-2">
        <div class="card">
          test
        </div>
      </div>
    </div>
  </div>
</div>

通过这些修改,子元素将扩展以填充其父元素的高度,同时仍然容纳内容的高度。Flexbox是一种很好的方式来处理这样的布局,你希望元素动态地占用可用空间。

相关问题