布局:创建响应式 3 卡片布局

Layout: Creating a responsive 3 card layout

我正在尝试实现一种布局,其中一张大卡片被同一列中的 2 个小卡片包围,但对于中小屏幕,将其移动为 2 列,一个包含大卡片,另一个仅包含 2 个卡片。

我不知道如何构建我的代码才能实现这一点。有人可以帮忙吗?

这是我的代码的一个片段

.container{
  display: flex;
  gap: 8px;
}
.small-card {
  width: 200px;
  height: 200px;
  background-color: red;
 }
 
 .big-card {
  height: 200px;
  flex-grow: 1;
  background-color: yellow;
  min-width: 250px;
 }
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div class="container">
    <div class="small-card">Small card 1</div>
    <div class="big-card">Big Card</div>
    <div class="small-card">Small Crad 2</div>
</div>

大屏幕:

中小屏幕:

您应该能够通过向您的所有卡片添加一个 class(如“.card”)来完成您想要的,如下所示:

<div class="container">
    <div class="card small-card">Small card 1</div>
    <div class="card big-card">Big Card</div>
    <div class="card small-card">Small Card 2</div>
</div>

然后使用这个媒体查询:

@media screen and (max-width: 768px) {
    .container {
      flex-wrap: wrap;
    }

   .big-card {
     width: 100%;
   } 

   .container :nth-child(1){
     order: 1;
   }

   .container :nth-child(3) {
     order: 2;
   }

   .small-card {
     flex-grow: 1;
   }
}

.container{
  display: flex;
  gap: 8px;
}
.small-card {
  width: 200px;
  height: 200px;
  background-color: red;
 }
 
 .big-card {
  height: 200px;
  flex-grow: 1;
  background-color: yellow;
  min-width: 250px;
 }
 
 @media screen and (max-width: 768px) {
    .container {
      flex-wrap: wrap;
    }
   
   .big-card {
     width: 100%;
   }  
 
   .container :nth-child(1){
     order: 1;
   }
   
   .container :nth-child(3) {
     order: 2;
   }
   
   .small-card {
     flex-grow: 1;
   }
 }
<div class="container">
    <div class="card small-card">Small card 1</div>
    <div class="card big-card">Big Card</div>
    <div class="card small-card">Small Crad 2</div>
</div>