css - 如何使用 css 网格构建此响应式网格

标签 css css-grid

enter image description here

.wrapper-grid {
  display: grid;
  grid-template-columns: 1fr 0.5fr 0.5fr 1fr;
  grid-gap: 20px;
}
.wrapper-item {
  border: 1px solid black;
  height: 200px;
}
.wrapper-item:nth-child(1){
  grid-column: 1/3
}
.wrapper-item:nth-child(2){
  grid-column: 3/5
}
.wrapper-item:nth-child(3){
  grid-column: 1/2
}
.wrapper-item:nth-child(4){
  grid-column: 2/4
}
.wrapper-item:nth-child(5){
  grid-column: 4/5
}
<div class="wrapper-grid">
  <div class="wrapper-item">
  </div>
  <div class="wrapper-item">
  </div>
  <div class="wrapper-item">
  </div>
  <div class="wrapper-item">
  </div>
  <div class="wrapper-item">
  </div>
</div>

我试图用下面的 html 代码构建这个响应式网格。当它没有网格间隙时,没问题,第一行图像具有相同的宽度,第二行也具有相同的宽度。但是当我添加网格间隙时,第二行的第二个元素变得比他左右两侧的邻居大一点。我尝试使用 calc(),但它不起作用。你能帮我解决这个问题吗?

最佳答案

这是因为中间元素包含一个间隙,所以它的宽度是gap + 1fr,而其他元素只有1fr。尝试像下面这样改变,这样所有底部元素都将包含一个间隙和 2fr,因此它们将是相同的。顶部的将有 3fr + 2gap 并保持相等。

.wrapper-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
  grid-gap: 20px;
}
.wrapper-item {
  border: 1px solid black;
  height: 200px;
}
.wrapper-item:nth-child(1){
  grid-column: 1/4
}
.wrapper-item:nth-child(2){
  grid-column: 4/7
}
.wrapper-item:nth-child(3){
  grid-column: 1/3
}
.wrapper-item:nth-child(4){
  grid-column: 3/5
}
.wrapper-item:nth-child(5){
  grid-column: 5/7
}
<div class="wrapper-grid">
  <div class="wrapper-item">
  </div>
  <div class="wrapper-item">
  </div>
  <div class="wrapper-item">
  </div>
  <div class="wrapper-item">
  </div>
  <div class="wrapper-item">
  </div>
</div>

关于css - 如何使用 css 网格构建此响应式网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53751472/

相关文章:

html - H3 标签移至 HR 行下

html - 为什么 `width:100%; height:100%; object-fit: contain;` 无法使 <video> 适合其容器?

html - 在 CSS 网格中居中

CSS 网格支持 webpack 上的 autoprefixer

html - 网格元素扩展以跟随列之间的偏移

html - 如何将 TD 放入包含大量内容的表格中

带有 "farbtastic"颜色选择器的 jquery ui 对话框

javascript - 我在 html 中的图像在 iphone 上重叠导航栏但在其他设备上不重叠

html - 如何像在网站上使用标签一样分隔文本?

css - 如何为所有行重复网格模板行