【问题标题】:How can I make Flex:1 for mobile devices responsive?如何让 Flex:1 为移动设备做出响应?
【发布时间】:2023-03-29 15:14:02
【问题描述】:

我创建了 3 列,每列的宽度完全相同。我使用以下代码来创建它:

我的计划是有 3 个 div,每个宽度为 33.33%,在手机上,每个“类别”div 应该有 100%。

我用width: 33.33% 尝试过,但是因为我想要在 div 之间留一点空间,所以 33.33% 的宽度太大了。

这就是我尝试使用 flex 的原因。

我怎样才能使这个版本的手机,让每个类别的 div 有 100 宽度?

.category-main-layout {
    width: 100%;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    display: flex;
    justify-content: space-between;
    margin: auto;
}
.category {
    flex: 1;
    text-align: center;
}
<div class="category-main-layout">
    <div class="category">
    CONTENT
    </div>
    <div class="category">
    CONTENT
    </div>
    <div class="category">
    CONTENT
    </div>
</div>

【问题讨论】:

  • flex: 0 0 100%; 和媒体查询。
  • 这使我的盒子 100%,但是另外两个盒子在网站之外.. 那么我怎样才能将盒子放在每个盒子下面呢?谢谢!

标签: html css responsive-design flexbox


【解决方案1】:

您可以使用媒体查询来实现这一点。在这里,如果屏幕大于 500px,那么类别将显示为块,因此每个都是 100% 宽度。

.category-main-layout {
  width: 100%;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  display: flex;
  justify-content: space-between;
  margin: auto;
}

.category {
  flex-grow: 1;
  text-align: center;
  border: 1px red solid;
}

@media screen and (max-width: 500px) {
  .category-main-layout {
    display: block;
  }
}
<div class="category-main-layout">
  <div class="category">
    CONTENT
  </div>
  <div class="category">
    CONTENT
  </div>
  <div class="category">
    CONTENT
  </div>
</div>

【讨论】:

    【解决方案2】:

    嘿,你可以以灵活的方式尝试这个,你需要在你的代码中改变一点

    看我的小提琴https://jsfiddle.net/arindam1996/v4ya76th/3/

    .category-main-layout {
        width: 100%;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
        display: flex;
        flex-wrap: wrap;
        justify-content: space-between;
        margin: auto;
    }
    .category {
        flex: 1;
        text-align: center;
    }
    
    @media screen and (max-width: 576px) {
      .category {
        -ms-flex: 0 0 100%;
        flex: 0 0 100%;
        max-width: 100%;
    }
    }
    <div class="category-main-layout">
        <div class="category">
        CONTENT
        </div>
        <div class="category">
        CONTENT
        </div>
        <div class="category">
        CONTENT
        </div>
    </div>

    【讨论】:

    • 您好,感谢您的帮助。这个版本不知何故在 Safari 上不起作用。但我已经有了一个解决方案 display: block.感谢您的帮助!!!
    • 欢迎。如果您为 display flex 和 flex-wrap 添加了相应的 hack 或尝试最新的引导程序 4,它将在 safari 上运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 2022-07-06
    • 2018-10-13
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多