【问题标题】:CSS Grid row/column gap on specific elements? [duplicate]特定元素上的 CSS Grid 行/列间隙? [复制]
【发布时间】:2018-05-25 14:25:15
【问题描述】:

我使用 CSS Grid 创建了下面的网格,我想知道是否可以仅在网格内的特定元素之间存在间隙,而不是对所有网格元素应用通用间隙。这是我现在拥有的:

body {
  margin: 40px;
}

.wrapper {
  display: grid;
  grid-gap: 10px;
  grid-template-columns: [col] 100px [col] 100px [col] 100px;
  grid-template-rows: [row] auto [row] auto [row] ;
  background-color: #fff;
  color: #444;
}

  .box {
    background-color:#444;
    color:#fff;
    padding:20px;
    font-size:150%;
  }
    .a {
      grid-column: col / span 2;
      grid-row: row 1 / 3;
    }
    .b {
      grid-column: col 3 / span 1;
      grid-row: row ;
    }
    .c {
      grid-column: col 3 / span 1;
      grid-row: row 2 ;
    }
    .d {
      grid-column: col / span 1;
      grid-row: row 3;
    }
    .e {
      grid-column: col 2 / span 1;
      grid-row: row 3;
    }
    .f {
      grid-column: col 3 / span 1;
      grid-row: row 3;
    }
    .g {
      grid-column: col / span 1;
      grid-row: row 4;
    }
    .h {
      grid-column: col 2 / span 1;
      grid-row: row 4;
    }
    .i {
      grid-column: col 3 / span 1;
      grid-row: row 4;
    }
<div class="wrapper">
  <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>

我想删除右侧前 2 行之间以及下方行中每个单元格之间的间隙。我想像现在一样保持单元格的分解,因为桌面上的布局会有所不同。这是我要实现的图形表示:

【问题讨论】:

    标签: css grid css-grid


    【解决方案1】:

    不可能改变特定元素上的差距。

    但是,您可以使用grid-item:nth-child(n) 引用特定的网格项目并为其设置负边距。

    例如,对于图片 1 类,它在 CSS 文件中可能如下所示:

    .picture-1:nth-child(3) {
      margin-bottom: -50px;
    }
    

    【讨论】:

      【解决方案2】:

      我有一个解决方法来获得您想要的结果。我只是将所有三行移动到一个单独的网格部分中。我不确定它是否有帮助,但这里是:

      body {
        margin: 40px;
      }
      
      .wrapper1 {
        display: grid;
        grid-gap: 10px;
        grid-template-columns: [col] 100px [col] 100px [col] 100px;
        grid-template-rows: [row] auto [row] auto [row] ;
        background-color: #fff;
        color: #444;
        margin-bottom: 10px;
      }
      .wrapper2 {
        display: grid;
        grid-template-columns: [col] 100px [col] 100px [col] 100px;
        grid-template-rows: [row] auto [row] auto [row] ;
        background-color: #fff;
        color: #444;
        margin-bottom: 10px;
      }
      
      .wrapper3 {
        display: grid;
        grid-template-columns: [col] 100px [col] 100px [col] 100px;
        grid-template-rows: [row] auto [row] auto [row] ;
        background-color: #fff;
        color: #444;
        margin-bottom: 10px;
      }
      
      .box {
        background-color:#444;
        color:#fff;
        padding:20px;
        font-size:150%;
      }
      .a {
        grid-column: col 1 / span 2;
        grid-row: row 1 / 3;
      }
      
      .b {
        grid-column: col 3 / span 1;
        grid-row: row ;
      }
      
      .c {
        grid-column: col 3 / span 1;
        grid-row: row 2 ;
      }
      
      .d {
        grid-column: col 1 / span 1;
        grid-row: row 3;
        width: 80%;
      }
      
      .e {
        grid-column: col 2 / span 1;
        grid-row: row 3;
        width: 80%;
      }
      
      .f {
        grid-column: col 3 / span 1;
        grid-row: row 3;
        width: 80%;
      }
      
      .g {
        grid-column: col 1 / span 1;
        grid-row: row 4;
        width: 80%;
      }
      
      .h {
        grid-column: col 2 / span 1;
        grid-row: row 4;
        width: 80%;
      }
      
      .i {
        grid-column: col 3 / span 1;
        grid-row: row 4;
        width: 80%;
      }
      <div class="wrapper1">
          <div class="box a">A</div>
          <div class="box b">B</div>
          <div class="box c">C</div>
      </div>
      <div class="wrapper2">
          <div class="box d">D</div>
          <div class="box e">E</div>
          <div class="box f">F</div>
      </div>
      <div class="wrapper3">
          <div class="box g">G</div>
          <div class="box h">H</div>
          <div class="box i">I</div>
      </div>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-15
        • 2016-09-30
        相关资源
        最近更新 更多