代码之家  ›  专栏  ›  技术社区  ›  Sharikov Vladislav

如何在css网格布局中以指定的行高隐藏列的溢出部分?

  •  0
  • Sharikov Vladislav  · 技术社区  · 6 年前

    我有以下JS和HTML代码:

    .first {
      height: 50px;
      background-color: red;
    }
    
    .second {
      height: 100px;
      background-color: green;
    }
    
    .container {
      display: grid;
      grid-template-rows: min-content;
      grid-template-columns: 265px auto;
    }
    <div class="container">
      <div class="first"></div>
      <div class="second"></div>
    </div>

    下面是一个例子: https://codepen.io/anon/pen/xMMOBB

    即使我加上 overflow:hidden 对于第二个元素,我可以看到第二个元素的溢出内容。为什么?

    我怎么能把它们藏起来?我只想看到我的CSS网格的50px。

    0 回复  |  直到 6 年前
        1
  •  1
  •   Temani Afif    6 年前

    溢出需要应用于元素溢出的容器,而不是元素本身,因为 min-content 这并不意味着 所有元素的最小高度 。在处理宽度而不是高度时,此属性很有用,因为默认情况下高度为 auto 而且已经适应了 最低含量 在大多数情况下。

    你需要的是简单地设置一个 max-height height 到容器:

    .first {
      height: 50px;
      background-color: red;
    }
    
    .second {
      height: 100px;
      background-color: green;
    }
    
    .container {
      display: grid;
      max-height:50px;
      overflow:hidden;
      grid-template-columns: 265px auto;
    }
    <div class="container">
      <div class="first"></div>
      <div class="second"></div>
    </div>

    grid-template-rows

    .first {
      height: 50px;
      background-color: red;
    }
    
    .second {
      height: 100px;
      background-color: green;
    }
    
    .container {
      display: grid;
      grid-template-rows:50px;
      overflow:hidden;
      grid-template-columns: 265px auto;
    }
    <div class=“container”>
    <div class=“first”></部门>
    <div class=“second”></部门>
    </部门>

    使现代化

    如果不想设置容器的高度,可以将第二列的内容移出流,这样就不会增加容器的高度:

    .first {
      height: 50px;
      background-color: red;
    }
    
    .second {
      position:relative;
    }
    .second > div {
      height: 100px;
      background-color: green;
      position:absolute;
      top:0;
      left:0;
      right:0;
    }
    
    .container {
      display: grid;
      overflow:hidden;
      grid-template-columns: 265px auto;
    }
    <div class="container">
      <div class="first"></div>
      <div class="second">
        <div></div>
      </div>
    </div>