如何在容器css中定义网格项的位置?

nnt7mjpx  于 2023-05-19  发布在  其他
关注(0)|答案(2)|浏览(123)

我有一个网格,基本上我需要能够在容器代码中定义项目的位置,为了更清楚,下面是我当前的代码:

<style>
.angry-grid {
   display: grid; 

   grid-template-rows: 1fr 1fr 1fr;
   grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
   
   gap: 0px;
   height: 100%;
   
}
  
#item-0 {

   background-color: #689779; 
   grid-row-start: 1;
   grid-column-start: 3;

   grid-row-end: 2;
   grid-column-end: 4;
   
}
#item-1 {

   background-color: #9D7F5B; 
   grid-row-start: 2;
   grid-column-start: 5;

   grid-row-end: 3;
   grid-column-end: 6;
   
}
#item-2 {

   background-color: #C756BB; 
   grid-row-start: 2;
   grid-column-start: 1;

   grid-row-end: 3;
   grid-column-end: 2;
   
}
#item-3 {

   background-color: #BDE79B; 
   grid-row-start: 3;
   grid-column-start: 4;

   grid-row-end: 4;
   grid-column-end: 5;
   
}
#item-4 {

   background-color: #5F97A5; 
   grid-row-start: 3;
   grid-column-start: 2;

   grid-row-end: 4;
   grid-column-end: 3;
   
}
</style>

<div class="angry-grid">
  <div id="item-0">&nbsp;</div>
  <div id="item-1">&nbsp;</div>
  <div id="item-2">&nbsp;</div>
  <div id="item-3">&nbsp;</div>
  <div id="item-4">&nbsp;</div>
</div>

我需要在容器代码(myGrid {...})中定义项的位置,我希望它足够清晰。
在这个例子中,它应该看起来像这样:

envsm3lx

envsm3lx1#

你不能。CSS使用选择器来选择元素,CSS的任何部分都没有使用规则集内的选择器。
最接近的方法是使用grid-template-areas to name regions of the grid。您仍然需要为要放置在这些区域中的每个元素编写一个选择器。

8i9zcol2

8i9zcol22#

正如quentin所说,最好的办法是使用grid-template-areas来定义子元素在网格布局中的位置。有多种在线资源可帮助您创建所需的布局。
我花了大约30秒的时间用这个工具创建这个布局:https://cssgrid-generator.netlify.app/
对于更高级的布局,我通常使用这个:https://grid.layoutit.com/

.parent {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  grid-template-rows: repeat(3, 1fr);
  grid-column-gap: 0px;
  grid-row-gap: 0px;
  max-width: 500px;
}

.parent div {
  height: 100px;
  width: 100%;
}

.div1 { grid-area: 1 / 3 / 2 / 4; background-color: red; }
.div2 { grid-area: 2 / 1 / 3 / 2; background-color: green; }
.div3 { grid-area: 3 / 2 / 4 / 3; background-color: violet; }
.div4 { grid-area: 3 / 4 / 4 / 5; background-color: tomato; }
.div5 { grid-area: 2 / 5 / 3 / 6; background-color: yellow; }
<div class="parent">
  <div class="div1"></div>
  <div class="div2"></div>
  <div class="div3"></div>
  <div class="div4"></div>
  <div class="div5"></div>
</div>

相关问题