Make CSS Grid auto-fill only 2 columns

前端 未结 1 1718
春和景丽
春和景丽 2020-12-18 03:54

I am using CSS Grid and have made the following layout in the codepen found here: https://codepen.io/alexg2195/pen/xLEeMd

My issue is that when using repeat(au

相关标签:
1条回答
  • 2020-12-18 04:47

    Is there a way to force two columns but still have the same min auto fill resize behaviors?

    Not with auto-fill / auto-fit.

    These functions are built to fit the largest number of tracks without overflowing the container.

    7.2.2.2. Repeat-to-fill: auto-fill and auto-fit repetitions

    When auto-fill is given as the repetition number, if the grid container has a definite size or max size in the relevant axis, then the number of repetitions is the largest possible positive integer that does not cause the grid to overflow its grid container.

    In order to "auto-fill" a maximum of two columns per row, you'll need to find another method.

    Maybe flexbox?

    revised demo

    body {
      margin: 40px;
    }
    
    .layout {
      display: grid;
      grid-gap: 10px;
      grid-template-columns: 1fr 100px;
      grid-template-areas: "main btn" "main .";
    }
    
    .btn {
      grid-area: btn;
      background-color: #444;
      color: #ffffd;
      border-radius: 5px;
      padding: 20px;
      font-size: 150%;
    }
    
    .boxes {
      grid-area: main;
      display: flex;
      flex-wrap: wrap;
    }
    
    .box {
      flex: 1 0 40%;
      margin: 5px;
      background-color: #444;
      color: #fff;
      border-radius: 5px;
      padding: 20px;
      font-size: 150%;
    }
    
    div.box.n {
      visibility: hidden;    /* https://stackoverflow.com/q/42176419/3597276 */
      height: 0;
    }
    <div class="layout">
      <div class="boxes">
        <div class="box a">A</div>
        <div class="box b">B</div>
        <div class="box c">C</div>
        <div class="box d">D</div>
        <div class="box e">E</div>
        <div class="box f">F</div>
        <div class="box g">G</div>
        <div class="box h">H</div>
        <div class="box i">I</div>
        <div class="box j">J</div>
        <div class="box k">K</div>
        <div class="box l">L</div>
        <div class="box m">M</div>
        <div class="box n">N</div>
      </div>
      <div class="btn">BTN</div>
    </div>

    0 讨论(0)
提交回复
热议问题