本文介绍了使弹性项目换行形成2列网格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用flexbox制作一个2列网格,但它不产生所需的结果。相反,它每行产生3列。这是我的标记和CSS:
I'm trying to make a 2-column grid with flexbox but it is not producing the desired result. Instead it is producing 3 columns per row. Here is my markup and css:
#product_variants {
display: flex;
}
#product_variants .product_addtocart_variant {
padding: 10px;
}
#product_variants .product_addtocart_variant .box-tocart .variant-info {
display: flex;
flex-direction: column;
margin-bottom: 10px;
}
#product_variants .product_addtocart_variant .box-tocart .variant-container {
display: inline-flex;
}
#product_variants .product_addtocart_variant .box-tocart .variant-container .variant-price {
font-weight: bold;
}
#product_variants .product_addtocart_variant .box-tocart .variant-container .quantity input {
width: 52px;
height: 52px;
text-align: center;
border: 3px solid #002855 !important;
}
#product_variants .product_addtocart_variant .box-tocart .actions button {
background-color: transparent;
border: 3px solid #ef7c00;
color: #ef7c00;
height: 52px;
}
<div id="product_variants">
<form class="product_addtocart_variant" novalidate="novalidate">
<div class="box-tocart">
<div class="variant-info">
<strong>322123-100 Exemplare</strong>
<span>Artikelnummer: 322123-100 Exemplare</span>
</div>
<div class="fieldset">
<div class="variant-container">
<div class="variant-price">
<span>Brutto: 432.0000</span>
<span>Netto: </span>
</div>
<div class="quantity">
<div class="control">
<input type="number" name="qty" class="qty" maxlength="12" value="1" title="Anzahl" data-validate="{"required-number":true,"validate-item-quantity":{"minAllowed":1}}">
</div>
</div>
<div class="actions">
<button type="submit" title="Zum Warenkorb hinzufügen" class="action primary tocart">
<span>Zum Warenkorb hinzufügen</span>
</button>
</div>
</div>
</div>
</div>
</form>
<form class="product_addtocart_variant" novalidate="novalidate">
<div class="box-tocart">
<div class="variant-info">
<strong>322123-50 Exemplare</strong>
<span>Artikelnummer: 322123-50 Exemplare</span>
</div>
<div class="fieldset">
<div class="variant-container">
<div class="variant-price">
<span>Brutto: 232.0000</span>
<span>Netto: </span>
</div>
<div class="quantity">
<div class="control">
<input type="number" name="qty" class="qty" maxlength="12" value="1" title="Anzahl" data-validate="{"required-number":true,"validate-item-quantity":{"minAllowed":1}}">
</div>
</div>
<div class="actions">
<button type="submit" title="Zum Warenkorb hinzufügen" class="action primary tocart">
<span>Zum Warenkorb hinzufügen</span>
</button>
</div>
</div>
</div>
</div>
</form>
<form class="product_addtocart_variant" novalidate="novalidate">
<div class="box-tocart">
<div class="variant-info">
<strong>322123-10 Exemplare</strong>
<span>Artikelnummer: 322123-10 Exemplare</span>
</div>
<div class="fieldset">
<div class="variant-container">
<div class="variant-price">
<span>Brutto: 132.0000</span>
<span>Netto: </span>
</div>
<div class="quantity">
<div class="control">
<input type="number" name="qty" class="qty" maxlength="12" value="1" title="Anzahl" data-validate="{"required-number":true,"validate-item-quantity":{"minAllowed":1}}">
</div>
</div>
<div class="actions">
<button type="submit" title="Zum Warenkorb hinzufügen" class="action primary tocart">
<span>Zum Warenkorb hinzufügen</span>
</button>
</div>
</div>
</div>
</div>
</form>
</div>
我的少于
推荐答案
flex容器的初始设置是 flex-wrap:nowrap
。
An initial setting of a flex container is flex-wrap: nowrap
. This means flex items will stack in a single line and not wrap.
而是使用:
#product_variants {
display: flex;
flex-wrap: wrap; /* NEW */
}
此外,为了强制每行两列,给每个项 flex-basis:50%
和 box-sizing:border-box
。
* {
box-sizing: border-box; /* NEW */
}
#product_variants {
display: flex;
flex-wrap: wrap; /* NEW */
}
#product_variants .product_addtocart_variant {
padding: 10px;
flex-basis: 50%; /* NEW */
}
#product_variants .product_addtocart_variant .box-tocart .variant-info {
display: flex;
flex-direction: column;
margin-bottom: 10px;
}
#product_variants .product_addtocart_variant .box-tocart .variant-container {
display: inline-flex;
}
#product_variants .product_addtocart_variant .box-tocart .variant-container .variant-price {
font-weight: bold;
}
#product_variants .product_addtocart_variant .box-tocart .variant-container .quantity input {
width: 52px;
height: 52px;
text-align: center;
border: 3px solid #002855 !important;
}
#product_variants .product_addtocart_variant .box-tocart .actions button {
background-color: transparent;
border: 3px solid #ef7c00;
color: #ef7c00;
height: 52px;
}
<div id="product_variants">
<form class="product_addtocart_variant" novalidate="novalidate">
<div class="box-tocart">
<div class="variant-info">
<strong>322123-100 Exemplare</strong>
<span>Artikelnummer: 322123-100 Exemplare</span>
</div>
<div class="fieldset">
<div class="variant-container">
<div class="variant-price">
<span>Brutto: 432.0000</span>
<span>Netto: </span>
</div>
<div class="quantity">
<div class="control">
<input type="number" name="qty" class="qty" maxlength="12" value="1" title="Anzahl" data-validate="{"required-number":true,"validate-item-quantity":{"minAllowed":1}}">
</div>
</div>
<div class="actions">
<button type="submit" title="Zum Warenkorb hinzufügen" class="action primary tocart">
<span>Zum Warenkorb hinzufügen</span>
</button>
</div>
</div>
</div>
</div>
</form>
<form class="product_addtocart_variant" novalidate="novalidate">
<div class="box-tocart">
<div class="variant-info">
<strong>322123-50 Exemplare</strong>
<span>Artikelnummer: 322123-50 Exemplare</span>
</div>
<div class="fieldset">
<div class="variant-container">
<div class="variant-price">
<span>Brutto: 232.0000</span>
<span>Netto: </span>
</div>
<div class="quantity">
<div class="control">
<input type="number" name="qty" class="qty" maxlength="12" value="1" title="Anzahl" data-validate="{"required-number":true,"validate-item-quantity":{"minAllowed":1}}">
</div>
</div>
<div class="actions">
<button type="submit" title="Zum Warenkorb hinzufügen" class="action primary tocart">
<span>Zum Warenkorb hinzufügen</span>
</button>
</div>
</div>
</div>
</div>
</form>
<form class="product_addtocart_variant" novalidate="novalidate">
<div class="box-tocart">
<div class="variant-info">
<strong>322123-10 Exemplare</strong>
<span>Artikelnummer: 322123-10 Exemplare</span>
</div>
<div class="fieldset">
<div class="variant-container">
<div class="variant-price">
<span>Brutto: 132.0000</span>
<span>Netto: </span>
</div>
<div class="quantity">
<div class="control">
<input type="number" name="qty" class="qty" maxlength="12" value="1" title="Anzahl" data-validate="{"required-number":true,"validate-item-quantity":{"minAllowed":1}}">
</div>
</div>
<div class="actions">
<button type="submit" title="Zum Warenkorb hinzufügen" class="action primary tocart">
<span>Zum Warenkorb hinzufügen</span>
</button>
</div>
</div>
</div>
</div>
</form>
</div>
这篇关于使弹性项目换行形成2列网格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!