CSS Grid在特定元素上的行/列间隙?

use*_*286 6 css grid css3 css-grid

我使用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;
    }
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

我想消除右侧顶部的两行之间的间隙以及该行下方的每个单元格之间的间隙。我想保持单元格现在的状态,因为桌面上的布局会有所不同。这是我要做什么的图形表示:

在此处输入图片说明

小智 22

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

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

例如,对于一个类型为 picture-1 的 CSS 文件,它可能看起来像这样:

.picture-1:nth-child(3) {
  margin-bottom: -50px;
}
Run Code Online (Sandbox Code Playgroud)


小智 9

我有一个办法可以得到你想要的结果。我刚刚将所有三行移动到一个单独的网格部分中。我不确定它是否有帮助,但它是:

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%;
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

5543 次

最近记录:

6 年,9 月 前