【问题标题】:Flex wrap not working with fixed width containerFlex wrap 不适用于固定宽度的容器
【发布时间】:2019-01-31 03:36:29
【问题描述】:

我有一个带有两个子容器的 flex-box 容器,在较小的屏幕上右侧应该折叠在左侧下方。但是,这似乎只在父容器宽度为 100% 时才有效,而不是在设置为固定宽度时有效。它需要基于设计的固定宽度,我尝试将固定宽度的容器包装在 100% 宽度的父容器中,但这并不有效。

如何将容器设置为固定宽度,以便项目在较小的屏幕尺寸下正确包装?

.call-out-container {
  width: 1172px;
  display: flex;
  -webkit-flex-flow: row wrap;
  justify-content: space-around;
  flex-wrap: wrap;
}

.call-out-box {
  color: #eee;
  font-weight: bold;
  font-size: 3em;
  text-align: center;
 }

.call-out-box {
  width: auto;
  height: 200px;
  color: #eee;
  font-weight: bold;
  font-size: 3em;
  text-align: center;
}

.call-out-box h1 {
  font-family: 'Helvetica';
  color: #00477B;
  font-weight: 400;
  font-size: 56px;
}

.call-out-box p {
  color: #333;
  font-size: 12px;
}
    <div class="call-out-container">
  <div class="call-out-box">
    <div style="width: 540px; height: 365px; margin: 0px 0px 0px 80px; display: flex; border: 2px solid orange; justify-content: center;">
      <div style="width: 445px; height: 445px; background-color: rgb(255, 255, 255); box-shadow: rgb(221, 221, 221) 0px 3px 11px 4px; position: relative; right: -30px; top: 20px; text-align: center; vertical-align: middle;">
        <p>CONTENT</p>
      </div>
    </div>
  </div>
  <div class="call-out-list">
    <h1>10.5k</h1>
    <p>Line 1</p>
    <p>Line 2</p>
  </div>
</div>


<div class="call-out-container">
  <div class="call-out-list">
    <h1>10.5k</h1>
    <p>Line 1</p>
    <p>Line 2</p>
  </div>
  <div class="call-out-box">
    <div style="width: 540px; height: 365px; margin: 0px 0px 0px 80px; display: flex; border: 2px solid orange; justify-content: center;">
      <div style="width: 445px; height: 445px; background-color: rgb(255, 255, 255); box-shadow: rgb(221, 221, 221) 0px 3px 11px 4px; position: relative; right: -30px; top: 20px; text-align: center; vertical-align: middle;">
        <p>CONTENT</p>
      </div>
    </div>
  </div>
</div>

JSFIDDLE 链接:LINK

【问题讨论】:

  • 如果你不打算使用 flex,那么 flexbox 没有多大用处 :)。我想说设计需要改变。
  • call-out-container 设置为width: 100% 会隐藏左侧下方的右侧框。有没有我可以用来隐藏它的 flexbox 属性?
  • 这样做是因为您在第一个 call-out-box 的内联样式中设置了高度。将第一个call-out-box 的高度设置为大于您的内联样式中的高度,或者使用答案中提到的grid
  • 这个问题不清楚,但是如果你把它改成max-width: 1172px;会有帮助吗?
  • 我用固定代码更新了我的问题,但折叠时行之间的间距仍然不正常。我添加了一个 jsfiddle 链接,因为它很难看到上面的代码 sn-p 发生了什么。

标签: css flexbox


【解决方案1】:

如果这些尺寸是固定的,请使用网格,而不是使用 flexbox。

.call-out-box{
/*other styles*/
  display:grid;
  grid-template-columns: 540px 445px;
  grid-template-rows: 365px 445px;
}

只删除行内样式中的宽度和高度属性。

【讨论】:

    【解决方案2】:

    如果尺寸是固定的,则使用网格 也去here jsfiddle

    .call-out-container {
      width: 100%;
      display: flex;
      -webkit-flex-flow: row wrap;
      justify-content: space-around;
      flex-wrap: wrap;
      margin-top: 200px;
    }
    
    .call-out-box {
      color: #eee;
      display:grid;
      grid-template-columns: 540px 445px;
      grid-template-rows: 365px 445px;
    }
    
    .call-out-list {
      color: #eee;
      font-weight: bold;
      font-size: 3em;
      text-align: center;
      padding-top: 100px;
    }
    
    .call-out-list h1{
      font-family: 'Helvetica';
      color: #00477B;
      font-weight: 400;
      font-size: 56px;
    }
    .call-out-list p {
      color: #333;
      font-size: 12px;
    }
    <div class="call-out-container">
      <div class="call-out-box">
        <div style="width: 540px; height: 365px; margin: 0px 0px 0px 80px; display: flex; border: 2px solid orange; justify-content: center;">
          <div style="width: 445px; height: 445px; background-color: rgb(255, 255, 255); box-shadow: rgb(221, 221, 221) 0px 3px 11px 4px; position: relative; right: -30px; top: 20px; text-align: center; vertical-align: middle;">
            <p>CONTENT</p>
          </div>
        </div>
      </div>
      <div class="call-out-list">
        <h1>10.5k</h1>
        <p>Line 1</p>
        <p>Line 2</p>
      </div>
    </div>
    
    
    <div class="call-out-container">
      <div class="call-out-list">
        <h1>10.5k</h1>
        <p>Line 1</p>
        <p>Line 2</p>
      </div>
      <div class="call-out-box">
        <div style="width: 540px; height: 365px; margin: 0px 0px 0px 80px; display: flex; border: 2px solid orange; justify-content: center;">
          <div style="width: 445px; height: 445px; background-color: rgb(255, 255, 255); box-shadow: rgb(221, 221, 221) 0px 3px 11px 4px; position: relative; right: -30px; top: 20px; text-align: center; vertical-align: middle;">
            <p>CONTENT</p>
          </div>
        </div>
      </div>
    </div>

    【讨论】:

      猜你喜欢
      • 2017-12-03
      • 2022-01-17
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      • 2017-12-17
      • 2017-04-20
      • 1970-01-01
      • 2021-03-26
      相关资源
      最近更新 更多