代码之家  ›  专栏  ›  技术社区  ›  Jeto

网格布局:单元格未覆盖所有指定行[重复]

  •  2
  • Jeto  · 技术社区  · 7 年前

    有人能帮我找出原因吗 .side 在下面的代码片段中不包括第三行吗(另外,为什么第三行向下这么远,它会生成一个垂直滚动条?)

    我很抱歉要问什么可能是一个非常基本的问题,这是一个侧项目,我通常不做CSS自己,只是试图学习网格,因为它感觉最自然的我。

    注:我猜 grid-row: 2 grid-row: 2 / 2

    .layout {
      display: grid;
      height: 100vh;
      grid-template-rows: 50px 1fr 50px;
      grid-template-columns: 250px 1fr;
    }
    
    header {
      grid-row: 1 / 1;
      grid-column: 2 / 2;
      background-color: #ccf;
    }
    
    .side {
      grid-row: 1 / 3;
      grid-column: 1 / 1;
      background-color: #ddd;
    }
    
    .main {
      grid-row: 2 / 2;
      grid-column: 2 / 2;
    }
    
    footer {
      grid-row: 3 / 3;
      grid-column: 2 / 2;
      background-color: #ccf;
    }
    <div class="layout">
      <header>header</header>
      <div class="side">side</div>
      <div class="main">main</div>
      <footer>footer</footer>
    </div>
    3 回复  |  直到 7 年前
        1
  •  2
  •   Temani Afif    7 年前

    你应该使用 n+1 grid-row-end

    .layout {
      display: grid;
      height: 100vh;
      grid-template-rows: 50px 1fr 50px;
      grid-template-columns: 250px 1fr;
    }
    
    header {
      grid-row: 1 / 2;
      grid-column: 2 / 3;
      background-color: #ccf;
    }
    
    .side {
      grid-row: 1 / 4;
      grid-column: 1 / 2;
      background-color: #ddd;
    }
    
    .main {
      grid-row: 2 / 3;
      grid-column: 2 / 3;
    }
    
    footer {
      grid-row: 3 / 4;
      grid-column: 2 / 3;
      background-color: #ccf;
    }
    <div class="layout">
      <header>header</header>
      <div class="side">side</div>
      <div class="main">main</div>
      <footer>footer</footer>
    </div>
        2
  •  3
  •   N8Brown    7 年前

    你只要把3改成4就行了。边从第一行(第一行的顶部)开始,到第四行(第三行的底部)结束。这里有一个很好的资源: https://css-tricks.com/snippets/css/complete-guide-grid/

    .layout {
      display: grid;
      height: 100vh;
      grid-template-rows: 50px 1fr 50px;
      grid-template-columns: 250px 1fr;
    }
    
    header {
      grid-row: 1 / 1;
      grid-column: 2 / 2;
      background-color: #ccf;
    }
    
    .side {
      grid-row: 1 / 4;
      grid-column: 1 / 1;
      background-color: #ddd;
    }
    
    .main {
      grid-row: 2 / 2;
      grid-column: 2 / 2;
    }
    
    footer {
      grid-row: 3 / 3;
      grid-column: 2 / 2;
      background-color: #ccf;
    }
    <div class="layout">
      <header>header</header>
      <div class="side">side</div>
      <div class="main">main</div>
      <footer>footer</footer>
    </div>
        3
  •  2
  •   Asiya Fatima    7 年前

    .layout {
      display: grid;
      height: 100vh;
      grid-template-rows: 50px 1fr 50px;
      grid-template-columns: 250px 1fr;
    }
    header {
      grid-row: 1 / 1;
      grid-column: 2 / 2;
      background-color: #ccf;
    }
    .side {
      grid-row: 1 / 4;
      grid-column: 1 / 1;
      background-color: #ddd;
    }
    .main {
      grid-row: 2 / 2;
      grid-column: 2 / 2;
    }
    
    footer {
      grid-row: 3 / 3;
      grid-column: 2 / 2;
      background-color: #ccf;
    }
    <div class="layout">
      <header>header</header>
      <div class="side">side</div>
      <div class="main">main</div>
      <footer>footer</footer>
    </div>