当前位置: 首页 > 知识库问答 >
问题:

是否可以用`Grid-Template-Areases'删除网格中空行的高度?

燕刚毅
2023-03-14

我有一个有八张(或更少)牌的格子。我希望卡片是自动放置在网格,不知道他们的宽度和高度。也就是说,宽度和高度应该在网格样式中指定。它的工作很好,当我有所有的8张牌显示。示例:

grid-template-areas:
    'card-1 card-1 card-2'
    'card-3 card-4 card-5'
    'card-3 card-6 card-5'
    'card-7 card-8 card-8';
grid-template-rows: 20px 20px 20px 20px;
grid-template-columns: 20px 20px 20px;

null

body {
  background: white;  
}

.grid {
  display: grid;
  grid-template-areas:
     'card-1 card-1 card-2'
     'card-3 card-4 card-5'
     'card-3 card-6 card-5'
     'card-7 card-8 card-8';
  grid-template-rows: 20px 20px 20px 20px;
  grid-template-columns: 20px 20px 20px;
  grid-gap: 5px;
  background: black;
}

.card-1 {
  grid-area: card-1;
  background: red;
}

.card-2 {
  grid-area: card-2;
  background: orange;
}

.card-3 {
  grid-area: card-3;
  background: yellow;
}

.card-4 {
  grid-area: card-4;
  background: green;
}

.card-5 {
  grid-area: card-5;
  background: cyan;
}

.card-6 {
  grid-area: card-6;
  background: blue;
}

.card-7 {
  grid-area: card-7;
  background: indigo;
}

.card-8 {
  grid-area: card-8;
  background: gray;
}
<div class="grid">
  <div class="card-1"></div>
  <div class="card-2"></div>
  <div class="card-3"></div>
  <div class="card-4"></div>
  <div class="card-5"></div>
  <div class="card-6"></div>
  <div class="card-7"></div>
  <div class="card-8"></div>
</div>

null

但是,当牌数少于8张时,问题就出现了。格子的最后一排没有被牌占据,但仍然有高度:

null

body {
  background: white;  
}

.grid {
  display: grid;
  grid-template-areas:
     'card-1 card-1 card-2'
     'card-3 card-4 card-5'
     'card-3 card-6 card-5'
     'card-7 card-8 card-8';
  grid-template-rows: 20px 20px 20px 20px;
  grid-template-columns: 20px 20px 20px;
  grid-gap: 5px;
  background: black;
}

.card-1 {
  grid-area: card-1;
  background: red;
}

.card-2 {
  grid-area: card-2;
  background: orange;
}

.card-3 {
  grid-area: card-3;
  background: yellow;
}

.card-4 {
  grid-area: card-4;
  background: green;
}

.card-5 {
  grid-area: card-5;
  background: cyan;
}

.card-6 {
  grid-area: card-6;
  background: blue;
}

.card-7 {
  grid-area: card-7;
  background: indigo;
}

.card-8 {
  grid-area: card-8;
  background: gray;
}
<div class="grid">
  <div class="card-1"></div>
  <div class="card-2"></div>
  <div class="card-3"></div>
  <div class="card-4"></div>
</div>

null

我可以通过删除Grid-Template-Area,将grid-template-rows替换为grid-auto-rows,将grid-area替换为grid-row+Grid-Column来解决这个问题:

null

body {
  background: white;  
}

.grid {
  display: grid;
  grid-auto-rows: 20px;
  grid-template-columns: 20px 20px 20px;
  grid-gap: 5px;
  background: black;
}

.card-1 {
  grid-row: 1;
  grid-column: 1 / 3;
  background: red;
}

.card-2 {
  grid-row: 1;
  grid-column: 3;
  background: orange;
}

.card-3 {
  grid-row: 2 / 4;
  grid-column: 1;
  background: yellow;
}

.card-4 {
  grid-row: 2;
  grid-column: 2;
  background: green;
}

.card-5 {
  grid-row: 2 / 4;
  grid-column: 3;
  background: cyan;
}

.card-6 {
  grid-row: 3;
  grid-column: 2;
  background: blue;
}

.card-7 {
  grid-row: 4;
  grid-column: 1;
  background: indigo;
}

.card-8 {
  grid-row: 4;
  grid-column: 2 / 4;
  background: gray;
}
<div class="grid">
  <div class="card-1"></div>
  <div class="card-2"></div>
  <div class="card-3"></div>
  <div class="card-4"></div>
</div>

null

但这种方法不是很方便。帮助,请,有没有可能做我想要的使用网格模板区域和指定宽度和高度的网格样式?(使用cascade指定网格子级的宽度和高度也是不可接受的)

共有1个答案

吕鸿朗
2023-03-14

您可以保留Grid-Colum/Grid-Row的使用,但要像下面这样简化代码,以防HTML代码始终保持良好的顺序:

null

.grid {
  display: grid;
  grid-auto-rows: 20px;
  grid-auto-flow: dense; /*to make sure we fill all the space (not mandatory)*/
  grid-template-columns: 20px 20px 20px;
  grid-gap: 5px;
  background: black;
  margin:5px;
}
/*only need this*/
.card-1,.card-8 {
  grid-column:span 2;
}
.card-3,.card-5 {
  grid-row:span 2;
}
/**/

.card-1 {background: red;}
.card-2 {background: orange;}
.card-3 {background: yellow;}
.card-4 {background: green;}
.card-5 {background: cyan;}
.card-6 {background: blue;}
.card-7 {background: indigo;}
.card-8 {background: gray;}
<div class="grid">
  <div class="card-1"></div>
  <div class="card-2"></div>
</div>

<div class="grid">
  <div class="card-1"></div>
  <div class="card-2"></div>
  <div class="card-3"></div>
  <div class="card-4"></div>
</div>

<div class="grid">
  <div class="card-1"></div>
  <div class="card-2"></div>
  <div class="card-3"></div>
  <div class="card-4"></div>
  <div class="card-5"></div>
  <div class="card-6"></div>
</div>

<div class="grid">
  <div class="card-1"></div>
  <div class="card-2"></div>
  <div class="card-3"></div>
  <div class="card-4"></div>
  <div class="card-5"></div>
  <div class="card-6"></div>
  <div class="card-7"></div>
  <div class="card-8"></div>
</div>
 类似资料:
  • 在Pyspark中执行映射函数时,我经常希望删除映射函数失败的数据(在本例中,转换为xml)。我想知道在映射步骤中是否有一个干净的方法来实现这一点? 返回blank的明显解决方案仍然会在RDD中保留一个对象。 创建一个聪明的筛选器是浪费我的时间,而像try/except on这样的哑筛选器是浪费计算时间,因为我会对XML进行两次解析。

  • 我是新的CSS网格和使用设计一个发票。在我的代码示例中,我有元素作为。此部分将有从数据库加载的发票项目,可以有行数。 为了嘲弄我在该节中添加了3行。但是我在中设置的高度值只应用于网格中的第一行。剩余的行只是将剩余的可用空间拆分。 对于3行示例,按预期工作,但仅对第一行应用高度。 CSS网格中是否有任何属性可用于将指定为网格中所有行的高度? null null

  • 问题内容: 如何使用Java SE从txt文件中删除所有空格和空行? 输入: 输出: 谢谢! 问题答案: 这样的事情怎么样: 注意-未经测试,可能不是完美的语法,但可以为您提供一个思路/方法。 请参阅以下JavaDocs以作参考: http //download.oracle.com/javase/7/docs/api/java/io/FileReader.html http://download

  • 问题内容: 如果我有发言权,。 当然,分配新的属性没有问题, 但是之后我想将其删除,因此这里无济于事。 所以, 是这样的。但是,还有一种更“优雅”的方式吗? 问题答案: 这适用于数组元素,变量和对象属性。 例:

  • Use our simple grid to build layouts of some sizes thanks to a twelve column system, Sass variables and mixins, and predefined classes. Examples <w class="container"> <w class="row"> <text class

  • 问题内容: Java 是这里的关键。我需要能够删除文件,但是用户希望能够从回收站中“取消删除”。据我所知这是不可能的。有人知道吗? 问题答案: 由于各种原因,Windows 没有简单地对应于回收站的文件夹的概念。 正确的方法是使用JNI调用Windows API,并在结构中设置标志。 SHFileOperation文档 使用SHFileOperation复制文件的Java示例(同一文章中的“回收站