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

网格项100%父项高度

  •  1
  • Alex  · 技术社区  · 5 年前

    body {
      display: grid;
      min-height: 85vh;
      grid-template-columns: auto 10fr 4fr;
      grid-template-rows: minmax(1rem, max-content) 1fr minmax(1rem, max-content);
      grid-template-areas: "header header aside" "main main aside" "footer footer footer";
    }
    
    header {
      grid-area: header;
      background: pink;
    }
    
    footer {
      grid-area: footer;
      background: blue;
    }
    
    main {
      grid-area: main;
      background: green;
    }
    
    aside {
      grid-area: aside;
      background: red;
      height: 100px;
      overflow-y: scroll;
    }
    <header> header </header>
    <main>main</main>
    <aside>
      aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>
    </aside>
    <footer> footer </footer>

    在不添加另一个具有100%高度绝对位置的内部元件的情况下,可以实现这一点吗?

    2 回复  |  直到 5 年前
        1
  •  4
  •   Temani Afif    5 年前

    使用 min-height: 100%;height:0;

    body {
      display: grid;
      min-height: 85vh;
      grid-template-columns: auto 10fr 4fr;
      grid-template-rows: 
        minmax(1rem, max-content) 1fr minmax(1rem, max-content);
      grid-template-areas: 
        "header header aside" 
        "main   main   aside" 
        "footer footer footer";
    }
    
    header {
      grid-area: header;
      background: pink;
    }
    
    footer {
      grid-area: footer;
      background: blue;
    }
    
    main {
      grid-area: main;
      background: green;
    }
    
    aside {
      grid-area: aside;
      background: red;
      min-height: 100%;
      height:0;
      overflow-y: scroll;
    }
    <header> header </header>
    <main>main</main>
    <aside>
      aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>
    </aside>
    <footer> footer </footer>
        2
  •  1
  •   dota2pro Matej    5 年前

    可以添加网格容器上使用的确切高度,然后添加 overflow-y: scroll

    body {
      display: grid;
      min-height: 75vh;
      grid-template-columns: auto 10fr 4fr;
      grid-template-rows: minmax(1rem, max-content) 1fr minmax(1rem, max-content);
      grid-template-areas: "header header aside" "main main aside" "footer footer footer";
    }
    
    header {
      grid-area: header;
      background: pink;
    }
    
    footer {
      grid-area: footer;
      background: blue;
    }
    
    main {
      grid-area: main;
      background: green;
    }
    
    aside {
      height: 100%;
      grid-area: aside;
      background: red;
      max-height: 75vh;
      overflow-y: scroll;
      z-index: 1;
    }
    <header> header </header>
    <main>main</main>
    <aside>
      aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>aside<br>
    </aside>
    <footer> footer </footer>