【问题标题】:How to make items stack on mobile view如何在移动视图上堆叠项目
【发布时间】:2021-10-26 00:37:02
【问题描述】:

我在桌面屏幕上使用 display flex 并排制作了 3 张图像,但现在我想让它们响应并在移动模式下堆叠项目。谁能告诉我怎么做?

代码:

.row {
  display: flex;
}

.column {
  padding: 200px;
  text-align: center;
  flex: 10%;
}

.column img {
  border-radius: 50%;
  width: 300px;
  border: 2px solid white;
}

.column p {
  color: white;
  padding-top: 50px;
  font-size: 24px;
}

.partners-h1 p {
  font-family: "BatmanForeverAlternate";
  font-size-adjust: 10px;
  color: white;
}

.partners-h1 {
  text-align: center;
  font-size: 30px;
}

/* added for demonstration purpose by editor */
body {
  background-color: black;
}
<div class="row">
  <div class="column">
    <img src="images/sneak.jpg">
    <p>Sneak Energy</p>
  </div>
  <div class="column">
    <img src="images/kontrol.png">
    <p>Kontrol Freek</p>
  </div>
  <div class="column">
    <img src="images/astro.jpg">
    <p>Astro Gaming</p>
  </div>
</div>

【问题讨论】:

标签: html css flexbox responsive-design


【解决方案1】:

我可以想到两种方法来解决这个问题。

方法一:使用媒体查询

.row {
  display: flex;
  flex-direction:column; /* Initially, mobile first */
}

/* If minimum screen width is 320, switch to side by side. Replace 320 with whatever screen size you want to swap between horizontal and stacked view */
@media (min-width:320px)
{
  .row {
    flex-direction:row;
  }
}

.column {
  padding: 200px;
  text-align: center;
  flex: 10%;
}

.column img {
  border-radius: 50%;
  width: 300px;
  border: 2px solid white;
}

.column p {
  color: white;
  padding-top: 50px;
  font-size: 24px;
}

.partners-h1 p {
  font-family: "BatmanForeverAlternate";
  font-size-adjust: 10px;
  color: white;
}

.partners-h1 {
  text-align: center;
  font-size: 30px;
}


/* added for demonstration purpose by editor */
body {
  background-color: black;
}
<div class="row">
  <div class="column">
    <img src="images/sneak.jpg">
    <p>Sneak Energy</p>
  </div>
  <div class="column">
    <img src="images/kontrol.png">
    <p>Kontrol Freek</p>
  </div>
  <div class="column">
    <img src="images/astro.jpg">
    <p>Astro Gaming</p>
  </div>
</div>

方法 2:当 2 张图片不能并排时,使用 flex-wrap 自动堆叠

.row {
  display: flex;
  flex-wrap:wrap;
}

.column {
  padding: 200px;
  text-align: center;
  flex: 10%;
}

.column img {
  border-radius: 50%;
  width: 300px;
  border: 2px solid white;
}

.column p {
  color: white;
  padding-top: 50px;
  font-size: 24px;
}

.partners-h1 p {
  font-family: "BatmanForeverAlternate";
  font-size-adjust: 10px;
  color: white;
}

.partners-h1 {
  text-align: center;
  font-size: 30px;
}


/* added for demonstration purpose by editor */
body {
  background-color: black;
}
<div class="row">
  <div class="column">
    <img src="images/sneak.jpg">
    <p>Sneak Energy</p>
  </div>
  <div class="column">
    <img src="images/kontrol.png">
    <p>Kontrol Freek</p>
  </div>
  <div class="column">
    <img src="images/astro.jpg">
    <p>Astro Gaming</p>
  </div>
</div>

【讨论】:

    【解决方案2】:

    添加一个媒体查询来寻址屏幕达到一定宽度,例如:

    @media only screen 
      and (max-width: 800px) { 
        selector { 
          property: value;
        } 
    }
    

    然后将flex-direction 属性从默认的row 更改为column
    flex-direction: column;

    引用媒体查询:MDN Web Docs

    .row {
      display: flex;
    }
    
    @media only screen
      and (max-width: 800px) {
        .row {
          flex-direction: column;
        }
    }
    
    .column {
      padding: 200px;
      text-align: center;
      flex: 10%;
    }
    
    .column img {
      border-radius: 50%;
      width: 300px;
      border: 2px solid white;
    }
    
    .column p {
      color: white;
      padding-top: 50px;
      font-size: 24px;
    }
    
    .partners-h1 p {
      font-family: "BatmanForeverAlternate";
      font-size-adjust: 10px;
      color: white;
    }
    
    .partners-h1 {
      text-align: center;
      font-size: 30px;
    }
    
    /* added for demonstration purpose by editor */
    body {
      background-color: black;
    }
    <div class="row">
      <div class="column">
        <img src="images/sneak.jpg">
        <p>Sneak Energy</p>
      </div>
      <div class="column">
        <img src="images/kontrol.png">
        <p>Kontrol Freek</p>
      </div>
      <div class="column">
        <img src="images/astro.jpg">
        <p>Astro Gaming</p>
      </div>
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 2019-11-24
      • 2016-04-16
      相关资源
      最近更新 更多