如何在 css 网格中使用行跨度
How to use row span in a css grid
不确定使用 css 网格是否可以实现我想要实现的目标,但我目前的实现无法正常工作。下面是我试图实现的布局。红色框横跨两行。
#wrapper {
display: grid;
grid-template-columns: repeat(5, 90px);
grid-auto-rows: 50px;
grid-gap: 5px;
width: 516px;
}
.wide {
grid-row: 1 / 4;
grid-column: 3 / 5;
background-color: red;
}
.block {
background-color: grey;
}
<div id="wrapper">
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block wide"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
</div>
#wrapper {
display: grid;
grid-template-columns: repeat(5, 90px);
grid-auto-rows: 50px;
grid-gap: 5px;
width: 516px;
}
.wide {
grid-row: 1 / 2;
grid-column: 1 /3;
background-color: re
}
.block {
background-color: blue;
}
<div id="wrapper">
<div class="block wide"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
</div>
下面的结果正是你想要的。
<div id="wrapper">
<div class="block" style="grid-column: 1/3;"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
</div>
在CSS中,我删除了.wide
和.block
。 #wrapper
保持不变。
Not sure if what am I am trying to achieve is possible using css grid
任何东西 都可以使用 CSS 网格
如评论中所述,您不是跨越 2 行,而是跨越 2 列。您还需要将 class 应用于第一个元素:.wide { grid-column: span 2; }
在你的图片中,你还有一个 6 列网格而不是 5 列网格
.grid {
display: grid;
grid-template-columns: repeat(6, 90px);
grid-auto-rows: 50px;
grid-gap: 5px;
}
.wide {
grid-column: span 2;
}
/* for styling purpose only */
.grid > div:nth-child(n+1) {
background-color: grey;
}
.grid > div:nth-child(1) {
background-color: brown;
}
<div class="grid">
<div class="wide"></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
不确定使用 css 网格是否可以实现我想要实现的目标,但我目前的实现无法正常工作。下面是我试图实现的布局。红色框横跨两行。
#wrapper {
display: grid;
grid-template-columns: repeat(5, 90px);
grid-auto-rows: 50px;
grid-gap: 5px;
width: 516px;
}
.wide {
grid-row: 1 / 4;
grid-column: 3 / 5;
background-color: red;
}
.block {
background-color: grey;
}
<div id="wrapper">
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block wide"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
</div>
#wrapper {
display: grid;
grid-template-columns: repeat(5, 90px);
grid-auto-rows: 50px;
grid-gap: 5px;
width: 516px;
}
.wide {
grid-row: 1 / 2;
grid-column: 1 /3;
background-color: re
}
.block {
background-color: blue;
}
<div id="wrapper">
<div class="block wide"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
</div>
下面的结果正是你想要的。
<div id="wrapper">
<div class="block" style="grid-column: 1/3;"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
</div>
在CSS中,我删除了.wide
和.block
。 #wrapper
保持不变。
Not sure if what am I am trying to achieve is possible using css grid
任何东西 都可以使用 CSS 网格
如评论中所述,您不是跨越 2 行,而是跨越 2 列。您还需要将 class 应用于第一个元素:.wide { grid-column: span 2; }
在你的图片中,你还有一个 6 列网格而不是 5 列网格
.grid {
display: grid;
grid-template-columns: repeat(6, 90px);
grid-auto-rows: 50px;
grid-gap: 5px;
}
.wide {
grid-column: span 2;
}
/* for styling purpose only */
.grid > div:nth-child(n+1) {
background-color: grey;
}
.grid > div:nth-child(1) {
background-color: brown;
}
<div class="grid">
<div class="wide"></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>