首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS网格和最小内容/自动

CSS网格和最小内容/自动
EN

Stack Overflow用户
提问于 2020-06-17 15:56:03
回答 1查看 172关注 0票数 0

所以我试着用CSS网格创建下面的图片。min-content和auto似乎玩得不好。这是一把小提琴!https://jsfiddle.net/pw9L52h0/

HTML:

代码语言:javascript
复制
<div class="grid">
  <div class="label-1">label 1</div>
  <div class="label-2">label 2</div>
  <div class="label-3">label 3</div>
  <div class="label-4">label 4</div>
  <div class="label-5">label 5</div>
  <div class="label-6">label 6</div>
  <div class="label-7">label 7</div>
</div>

CSS:

代码语言:javascript
复制
.grid {
  display: grid;
  grid-template-rows: 60px min-content auto;
  grid-template-columns: 60px min-content auto;
  width: 230px;
  height: 230px;
  background-color: lightgray;
}

.label-1 {
  grid-row-start: 0;
  grid-row-end: 1;
  grid-column-start: 0;
  grid-column-end: 1;
  background-color: red;
}

.label-2 {
  grid-row-start: 0;
  grid-row-end: 1;
  grid-column-start: 1;
  grid-column-end: 3;
  background-color: green;
}

.label-3 {
  grid-row-start: 1;
  grid-row-end: 3;
  grid-column-start: 0;
  grid-column-end: 1;
  background-color: blue;
}

.label-4 {
  grid-row-start: 1;
  grid-row-end: 2;
  grid-column-start: 1;
  grid-column-end: 2;
  background-color: yellow;
}

.label-5 {
  grid-row-start: 1;
  grid-row-end: 2;
  grid-column-start: 2;
  grid-column-end: 3;
  background-color: orange;
}

.label-6 {
  grid-row-start: 2;
  grid-row-end: 3;
  grid-column-start: 1;
  grid-column-end: 2;
  background-color: pink;
}

.label-7 {
  grid-row-start: 2;
  grid-row-end: 3;
  grid-column-start: 2;
  grid-column-end: 3;
  background-color: purple;
}

结果是这样的:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-17 16:15:37

当你只需要像下面这样的几行代码时,你就把事情搞得过于复杂了:

代码语言:javascript
复制
.grid {
  display: grid;
  grid-template-rows: 60px min-content auto;
  grid-template-columns: 60px min-content auto;
  width: 230px;
  height: 230px;
  background-color: lightgray;
}

.label-1 {
  background-color: red;
}

.label-2 {
  grid-column:span 2; /* this */
  background-color: green;
}

.label-3 {
  grid-row:span 2; /* and this */
  background-color: blue;
}

.label-4 {
  background-color: yellow;
}

.label-5 {
  background-color: orange;
}

.label-6 {
  background-color: pink;
}

.label-7 {
  background-color: purple;
}
代码语言:javascript
复制
<div class="grid">
  <div class="label-1">label 1</div>
  <div class="label-2">label 2</div>
  <div class="label-3">label 3</div>
  <div class="label-4">label 4</div>
  <div class="label-5">label 5</div>
  <div class="label-6">label 6</div>
  <div class="label-7">label 7</div>
</div>

代码的主要问题是您从0开始计算,而您需要从1开始。3列表示4行(1,2,3,4)。

您可以在控制台中清楚地看到grid-start-* = 0是无效的,并且grid-end-* = 1会将元素的末尾放在第一行,在开头创建一个隐式的新列/行,因此您将以4列/行结束:

下面是用正确的数字修复的代码:

代码语言:javascript
复制
.grid {
  display: grid;
  grid-template-rows: 60px min-content auto;
  grid-template-columns: 60px min-content auto;
  width: 230px;
  height: 230px;
  background-color: lightgray;
}

.label-1 {
  grid-row-start: 1;
  grid-row-end: 2;
  grid-column-start: 1;
  grid-column-end: 2;
  background-color: red;
}

.label-2 {
  grid-row-start: 1;
  grid-row-end: 2;
  grid-column-start: 2;
  grid-column-end: 4;
  background-color: green;
}

.label-3 {
  grid-row-start: 2;
  grid-row-end: 4;
  grid-column-start: 1;
  grid-column-end: 2;
  background-color: blue;
}

.label-4 {
  grid-row-start: 2;
  grid-row-end: 3;
  grid-column-start: 2;
  grid-column-end: 3;
  background-color: yellow;
}

.label-5 {
  grid-row-start: 2;
  grid-row-end: 3;
  grid-column-start: 3;
  grid-column-end: 4;
  background-color: orange;
}

.label-6 {
  grid-row-start: 3;
  grid-row-end: 4;
  grid-column-start: 2;
  grid-column-end: 3;
  background-color: pink;
}

.label-7 {
  grid-row-start: 3;
  grid-row-end: 4;
  grid-column-start: 3;
  grid-column-end: 4;
  background-color: purple;
}
代码语言:javascript
复制
<div class="grid">
  <div class="label-1">label 1</div>
  <div class="label-2">label 2</div>
  <div class="label-3">label 3</div>
  <div class="label-4">label 4</div>
  <div class="label-5">label 5</div>
  <div class="label-6">label 6</div>
  <div class="label-7">label 7</div>
</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62424114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档