CSS 网格问题,响应式设计不起作用

Problem with CSS grid, responsive design not working

这是我的 CSS 代码: 我有网格 class,其中包含响应式设计的所有必要参数和 HTML 代码,其中包含六个元素,它应该在低屏幕分辨率下换行并在彼此下方发送块

/* grid test */
.angry-grid {
   display: grid;
   grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
   /*grid-template-rows: 1fr 1fr 1fr;*/
   grid-gap: 25px;
   align-items: flex-start;
   grid-auto-flow: column;
   grid-auto-rows: auto;
}

  
#item-0 {
   grid-row-start: 1;
   grid-column-start: 1;
   grid-row-end: 2;
   grid-column-end: 2;
}
#item-1 {
   grid-row-start: 1;
   grid-column-start: 2;
   grid-row-end: 2;
   grid-column-end: 3;
}
#item-2 {
   grid-row-start: 1;
   grid-column-start: 3;
   grid-row-end: 2;
   grid-column-end: 4;
}
#item-3 {
   grid-row-start: 1;
   grid-column-start: 4;
   grid-row-end: 2;
   grid-column-end: 5;
}
#item-4 {
   grid-row-start: 2;
   grid-column-start: 1;
   grid-row-end: 3;
   grid-column-end: 4;
}
#item-5 { 
   grid-row-start: 2;
   grid-column-start: 4;
   grid-row-end: 3;
   grid-column-end: 5;
}
<div class="angry-grid">
  <div id="item-0">
    1
  </div>
  <div id="item-1">
    2
  </div>
  <div id="item-2">
    3
  </div>
  <div id="item-3">
    4
  </div>
  <div id="item-4">
    5
  </div>
  <div id="item-5">
    6
  </div>
</div>

如您所见,当屏幕分辨率较低时,模板根本没有响应。

您希望当屏幕变小时,您的项目“包裹”,这可以通过 Flex Boxes网格布局,但首先:

  1. 不要用那么多IDRead this : Reasons not to use IDs in CSS
  2. 如果您希望项目为“responsive/flexible”,请不要明确定义项目应放置在哪些单元格中,否则您将不得不使用 @media queries

.angry-grid {
   display: grid;
   grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
   grid-gap: 25px;
}

.angry-grid div{
  background-color: BlanchedAlmond;
  height: 50px;
}

.angry-grid div:nth-child(even){
  background-color: burlywood;
}

.angry-flex{
  display: flex;
  flex-wrap: wrap;
  gap: 25px;
}
.angry-flex div{
  min-width: 150px;
}
.angry-flex div{
  background-color: BlanchedAlmond;
  height: 50px;
}

.angry-flex div:nth-child(even){
  background-color: burlywood;
}
<h1>Grid Layout</h1>
<div class="angry-grid">
    <div class="item-0">
1
    </div>
    <div class="item-1">
2
    </div>
    <div class="item-2">
3
    </div>
    <div class="item-3">
4
    </div>
    <div class="item-4">
5
    </div>
    <div class="item-5">
6
    </div>
  </div>
  
 <h1>Flex Box</h1>
  
  <div class="angry-flex">
    <div class="item-0">
1
    </div>
    <div class="item-1">
2
    </div>
    <div class="item-2">
3
    </div>
    <div class="item-3">
4
    </div>
    <div class="item-4">
5
    </div>
    <div class="item-5">
6
    </div>
  </div>

问题是您想要包装项目,但同时您为每个项目指定它应该在网格中的位置:

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

而且在第 2 列结束 item-0 并在第 2 列开始 item-1 也不起作用,因为这意味着它们将在同一列中。

所以我从每件商品中删除了您所有的 css 并且包装效果很好。 在您希望某些项目从第 2 行开始后,您需要指定它。 我还建议您使用媒体查询。

所以现在对于 725 像素以下的屏幕,您将只能看到 1 列。

演示

/* grid test */
.angry-grid {
   display: grid;
   grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
   grid-gap: 25px;
   align-items: flex-start;
   grid-auto-flow: row;
   grid-auto-rows: auto;
}

  
/*#item-0 {
   grid-row-start: 1;
   grid-column-start: 1;
   grid-row-end: 2;
   grid-column-end: 2;
}
#item-1 {
   grid-row-start: 1;
   grid-column-start: 2;
   grid-row-end: 2;
   grid-column-end: 3;
}
#item-2 {
   grid-row-start: 1;
   grid-column-start: 3;
   grid-row-end: 2;
   grid-column-end: 4;
}
#item-3 {
   grid-row-start: 1;
   grid-column-start: 4;
   grid-row-end: 2;
   grid-column-end: 5;
}
#item-4 {
   grid-row-start: 2;
   grid-column-start: 1;
   grid-row-end: 3;
   grid-column-end: 4;
}
#item-5 { 
   grid-row-start: 2;
   grid-column-start: 4;
   grid-row-end: 3;
   grid-column-end: 5;
}*/
<div class="angry-grid">
  <div id="item-0">
    1
  </div>
  <div id="item-1">
    2
  </div>
  <div id="item-2">
    3
  </div>
  <div id="item-3">
    4
  </div>
  <div id="item-4">
    5
  </div>
  <div id="item-5">
    6
  </div>
</div>