【问题标题】:Flex container not wrapping items [duplicate]Flex容器不包装物品[重复]
【发布时间】:2021-11-11 15:30:18
【问题描述】:

我正在为我的作业创建一个简单的 flexbox 定价页面,我最终完成了它。问题是当屏幕尺寸减小时定价卡不会换行到下一行我已将 flex-wrap 设置为换行但仍然没有运气。我搜索了这个问题,一些结果说将 flex-container max-width 设置为 100% 会有所帮助,但它没有。我尝试了很多其他的东西,但无济于事。有人可以帮我解决这个问题吗?

代码

*{
    padding: 0px;
    margin: 0px; 
    box-sizing: border-box;
    font-family: Poppins, sans-serif;
    color:  #00255A;
}



.card-container{
    display: flex;

    height: 80%;

    justify-content: space-evenly;
    align-items: center;
    flex-wrap: wrap;
}



.card{
    background-color: white;
    width:25%;
    height: 70%;
    border-radius: 5%;
    transition: .5s ease;
    border: 3px solid #00255A;
    overflow: hidden;
    
}

.card-heading{
    text-align: center;
    padding: 15px;
    text-transform: uppercase;
    border-bottom: 3px dotted #00255A;
    margin: 10px;
}

.card-body{
    margin-top: 15px;
    margin: 2%;
}

.card-price{

    width: 60%;
    margin: auto;
   text-align: center;
   margin-top: 10%;
   font-size: larger;
}


.card-features{
    margin-top: 4%;
}

ul{
    text-align: center;
    list-style: none;
    
}

ul li{
    padding: 5px;
    font-size: small;
    font-weight: light;
    
}

.btn-container{
    text-align: center;
    margin-top: 10px;

}

.btn-container button{
    width:150px;
    height: 40px;
    background-color: white;
    font-weight: bold;
    border: 3px solid #00255A ;
    transition: .5s ease-out;
}


.recommended{
    position: absolute;
    background-color: red;
    width:150px;
    top: 5px;
    left:-18px;
    transform: rotate(-30deg);
    padding-left: 15px;
    

}

.recommended h4{
    font-weight: lighter;
    text-transform: uppercase;
    color: white;
}



/* Hover Effects */


.btn-container button:hover{
    background-color: #00255A;
    color: white;
    box-shadow: 4px 4px 5px lightgray;


}

.card:hover{
    box-shadow: 2px 2px 3px lightgray;
    transform: translateY(-5px);
}
<div class="card-container">

    <!-- Student Plan Card -->
    <div class="card">

        <div class="card-heading">
            <h3>Student</h3>
        </div>
        <div class="card-body">
            <div class="card-price">
                <h1>19.99/mo</h1>
            </div>
            <div class="card-features">

                <ul>
                    <li>24/7 Live Support</li>
                    <li>15GB Cloud Storage</li>
                    <li>Upto 5 Users</li>
                </ul>
            </div>
        </div>
        <div class="btn-container">
            <button>Buy Now!</button>
        </div>
    </div>

    <!-- Team Plan Card -->

    <div class="card" style="height: 80%; position: relative;">
        <div class="recommended">
            <h4>Popular</h4>
        </div>
        <div class="card-heading">
            <h3>Team</h3>
        </div>
        <div class="card-body">
            <div class="card-price">
                <h1>24.99/mo</h1>
            </div>
            <div class="card-features">

                <ul>
                    <li>24/7 Live Support</li>
                    <li>40GB Cloud Storage</li>
                    <li>Upto 10 Users</li>
                </ul>
            </div>
        </div>
        <div class="btn-container">
            <button>Buy Now!</button>
        </div>
    </div>

    <!-- Business Plan Card -->

    <div class="card" >
        <div class="card-heading">
            <h3>Business </h3>

        </div>
        <div class="card-body">
            <div class="card-price">
                <h1>39.99/mo</h1>
            </div>
            <div class="card-features">

                <ul>
                    <li>24/7 Live Support</li>
                    <li>100GB Cloud Storage</li>
                    <li>Unlimited Users</li>
                </ul>
            </div>
        </div>
        <div class="btn-container">
            <button>Buy Now!</button>
        </div>
    </div>



</div>

【问题讨论】:

标签: html css flexbox


【解决方案1】:

您已将卡片的 with 设置为 25%。您需要添加一个媒体查询 (https://wiki.selfhtml.org/wiki/CSS/Media_Queries),以便您可以在屏幕太小时设置另一个。

.card{
    width: 50%;
}

@media (min-width: 1200px){
  .card{
    width: 30%
  }
}

【讨论】:

    【解决方案2】:

    使用width 的硬代码来换行,如果你想使用软代码,你可以使用@media 用于不同的屏幕尺寸。

    根据需要添加边距和内边距

    @media 像这样:

    @media (max-width: 776px){
      .card {
        width: 48%;
        margin: 2% 1%;
      }
    }
    
    @media (max-width: 500px){
      .card {
        width: 90%;
        margin: 2% auto;
      }
    }
    

    * {
      padding: 0px;
      margin: 0px;
      box-sizing: border-box;
      font-family: Poppins, sans-serif;
      color: #00255A;
    }
    
    .card-container {
      display: flex;
      height: 80%;
      justify-content: space-evenly;
      align-items: center;
      flex-wrap: wrap;
    }
    
    .card {
      background-color: white;
      width: 300px;
      height: 70%;
      margin: 5px;  /*Add according to need*/
      border-radius: 5%;
      transition: .5s ease;
      border: 3px solid #00255A;
      overflow: hidden;
    }
    
    .card-heading {
      text-align: center;
      padding: 15px;
      text-transform: uppercase;
      border-bottom: 3px dotted #00255A;
      margin: 10px;
    }
    
    .card-body {
      margin-top: 15px;
      margin: 2%;
    }
    
    .card-price {
      width: 60%;
      margin: auto;
      text-align: center;
      margin-top: 10%;
      font-size: larger;
    }
    
    .card-features {
      margin-top: 4%;
    }
    
    ul {
      text-align: center;
      list-style: none;
    }
    
    ul li {
      padding: 5px;
      font-size: small;
      font-weight: light;
    }
    
    .btn-container {
      text-align: center;
      margin-top: 10px;
    }
    
    .btn-container button {
      width: 150px;
      height: 40px;
      background-color: white;
      font-weight: bold;
      border: 3px solid #00255A;
      transition: .5s ease-out;
    }
    
    .recommended {
      position: absolute;
      background-color: red;
      width: 150px;
      top: 5px;
      left: -18px;
      transform: rotate(-30deg);
      padding-left: 15px;
    }
    
    .recommended h4 {
      font-weight: lighter;
      text-transform: uppercase;
      color: white;
    }
    
    
    /* Hover Effects */
    
    .btn-container button:hover {
      background-color: #00255A;
      color: white;
      box-shadow: 4px 4px 5px lightgray;
    }
    
    .card:hover {
      box-shadow: 2px 2px 3px lightgray;
      transform: translateY(-5px);
    }
    <div class="card-container">
    
      <!-- Student Plan Card -->
      <div class="card">
    
        <div class="card-heading">
          <h3>Student</h3>
        </div>
        <div class="card-body">
          <div class="card-price">
            <h1>19.99/mo</h1>
          </div>
          <div class="card-features">
    
            <ul>
              <li>24/7 Live Support</li>
              <li>15GB Cloud Storage</li>
              <li>Upto 5 Users</li>
            </ul>
          </div>
        </div>
        <div class="btn-container">
          <button>Buy Now!</button>
        </div>
      </div>
    
      <!-- Team Plan Card -->
    
      <div class="card" style="height: 80%; position: relative;">
        <div class="recommended">
          <h4>Popular</h4>
        </div>
        <div class="card-heading">
          <h3>Team</h3>
        </div>
        <div class="card-body">
          <div class="card-price">
            <h1>24.99/mo</h1>
          </div>
          <div class="card-features">
    
            <ul>
              <li>24/7 Live Support</li>
              <li>40GB Cloud Storage</li>
              <li>Upto 10 Users</li>
            </ul>
          </div>
        </div>
        <div class="btn-container">
          <button>Buy Now!</button>
        </div>
      </div>
    
      <!-- Business Plan Card -->
    
      <div class="card">
        <div class="card-heading">
          <h3>Business </h3>
    
        </div>
        <div class="card-body">
          <div class="card-price">
            <h1>39.99/mo</h1>
          </div>
          <div class="card-features">
    
            <ul>
              <li>24/7 Live Support</li>
              <li>100GB Cloud Storage</li>
              <li>Unlimited Users</li>
            </ul>
          </div>
        </div>
        <div class="btn-container">
          <button>Buy Now!</button>
        </div>
      </div>
    
    
    
    </div>

    【讨论】:

      【解决方案3】:

      您必须严格定义卡片的宽度。 25% 是一个相对值,这意味着它将缩小到适合容器的大小。出于美学原因,我添加了一些边距,并添加了flex: 1 0 0 - 它会在必要时增长,不会收缩(如果它不会收缩),并且每张卡片都会从width 中定义的基本宽度增长。如果您不希望它增长,只需​​定义flex:0 0 auto,或完全删除flex 行,然后定义justify-content: space-evenly

      请注意,您也可以使用媒体查询对其进行硬编码。事实上,我建议为您的卡片设置不同的宽度可能会很麻烦,而创建一个固定宽度的卡片托盘可能会更容易。

      * {
        padding: 0px;
        margin: 0px;
        box-sizing: border-box;
        font-family: Poppins, sans-serif;
        color: #00255A;
      }
      
      .card-container {
        margin-top: 20px;
        display: flex;
        height: 80%;
        justify-content: stretch;
        align-items: center;
        flex-wrap: wrap;
      }
      
      .card {
        background-color: white;
        width: 250px;
        flex: 1 0 auto;
        margin: 0 50px 20px 50px;
        padding-bottom: 20px;
        height: 70%;
        border-radius: 5%;
        transition: .5s ease;
        border: 3px solid #00255A;
        overflow: hidden;
      }
      
      .card-heading {
        text-align: center;
        padding: 15px;
        text-transform: uppercase;
        border-bottom: 3px dotted #00255A;
        margin: 10px;
      }
      
      .card-body {
        margin-top: 15px;
        margin: 2%;
      }
      
      .card-price {
        width: 60%;
        margin: auto;
        text-align: center;
        margin-top: 10%;
        font-size: larger;
      }
      
      .card-features {
        margin-top: 4%;
      }
      
      ul {
        text-align: center;
        list-style: none;
      }
      
      ul li {
        padding: 5px;
        font-size: small;
        font-weight: light;
      }
      
      .btn-container {
        text-align: center;
        margin-top: 10px;
      }
      
      .btn-container button {
        width: 150px;
        height: 40px;
        background-color: white;
        font-weight: bold;
        border: 3px solid #00255A;
        transition: .5s ease-out;
      }
      
      .recommended {
        position: absolute;
        background-color: red;
        width: 150px;
        top: 5px;
        left: -18px;
        transform: rotate(-30deg);
        padding-left: 15px;
      }
      
      .recommended h4 {
        font-weight: lighter;
        text-transform: uppercase;
        color: white;
      }
      
      
      /* Hover Effects */
      
      .btn-container button:hover {
        background-color: #00255A;
        color: white;
        box-shadow: 4px 4px 5px lightgray;
      }
      
      .card:hover {
        box-shadow: 2px 2px 3px lightgray;
        transform: translateY(-5px);
      }
      <div class="card-container">
      
        <!-- Student Plan Card -->
        <div class="card">
      
          <div class="card-heading">
            <h3>Student</h3>
          </div>
          <div class="card-body">
            <div class="card-price">
              <h1>19.99/mo</h1>
            </div>
            <div class="card-features">
      
              <ul>
                <li>24/7 Live Support</li>
                <li>15GB Cloud Storage</li>
                <li>Upto 5 Users</li>
              </ul>
            </div>
          </div>
          <div class="btn-container">
            <button>Buy Now!</button>
          </div>
        </div>
      
        <!-- Team Plan Card -->
      
        <div class="card" style="height: 80%; position: relative;">
          <div class="recommended">
            <h4>Popular</h4>
          </div>
          <div class="card-heading">
            <h3>Team</h3>
          </div>
          <div class="card-body">
            <div class="card-price">
              <h1>24.99/mo</h1>
            </div>
            <div class="card-features">
      
              <ul>
                <li>24/7 Live Support</li>
                <li>40GB Cloud Storage</li>
                <li>Upto 10 Users</li>
              </ul>
            </div>
          </div>
          <div class="btn-container">
            <button>Buy Now!</button>
          </div>
        </div>
      
        <!-- Business Plan Card -->
      
        <div class="card">
          <div class="card-heading">
            <h3>Business </h3>
      
          </div>
          <div class="card-body">
            <div class="card-price">
              <h1>39.99/mo</h1>
            </div>
            <div class="card-features">
      
              <ul>
                <li>24/7 Live Support</li>
                <li>100GB Cloud Storage</li>
                <li>Unlimited Users</li>
              </ul>
            </div>
          </div>
          <div class="btn-container">
            <button>Buy Now!</button>
          </div>
        </div>
      
      
      
      </div>

      您可以全屏查看并调整浏览器大小以查看换行的工作方式。

      【讨论】:

        猜你喜欢
        • 2018-04-19
        • 1970-01-01
        • 2021-12-25
        • 2017-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-24
        相关资源
        最近更新 更多