2017-09-14 79 views
6

當有單選按鈕或複選框時,flexbox表單在表單項之間存在空隙。是否有任何選擇來避免使用flex或其他方法的差距?如何修復表單中元素之間的空隙?

form { 
 
    width: 100%; 
 
    display: -webkit-box; 
 
    display: -ms-flexbox; 
 
    display: flex; 
 
    -ms-flex-wrap: wrap; 
 
    flex-wrap: wrap; 
 
} 
 

 
form>div { 
 
    box-sizing: border-box; 
 
    padding: 0.5rem; 
 
    -ms-flex-preferred-size: 50%; 
 
    flex-basis: 50%; 
 
} 
 

 
form>div input:not([type=checkbox]):not([type=radio]), 
 
form>div textarea { 
 
    background-color: rgba(0, 0, 0, 0.1); 
 
    border: 1px solid rgba(0, 0, 0, 0.1); 
 
    padding: 0.25rem; 
 
    min-height: 40px; 
 
    width: 100%; 
 
}
<form> 
 
    <div><input placeholder="First Name" /></div> 
 
    <div><input placeholder="Last Name" /></div> 
 
    <div> 
 
    <ul class="radio_list"> 
 
     <li><input name="form" type="radio" value="0">&nbsp;<label>Male</label></li> 
 
     <li><input name="form" type="radio" value="1">&nbsp;<label>Female</label></li> 
 
     <li><input name="form" type="radio" value="2">&nbsp;<label>gfdg</label></li> 
 
     <li><input name="form" type="radio" value="3">&nbsp;<label>gfdg</label></li> 
 
     <li><input name="form" type="radio" value="4">&nbsp;<label>gfd</label></li> 
 
    </ul> 
 
    </div> 
 
    <div><input placeholder="Phone" type="phone" /></div> 
 
    <div><input placeholder="Email" type="email" /></div> 
 
    <div> 
 
    <ul class="checkbox_list"> 
 
     <li><input name="form_3" type="checkbox" value="0" checked="checked" required="required">&nbsp;<label>Checkbox 1</label></li> 
 
     <li><input name="form_3" type="checkbox" value="1" checked="checked">&nbsp;<label>Checkbox 2</label></li> 
 
     <li><input name="form_3" type="checkbox" value="2" checked="checked">&nbsp;<label>Checkbox 3</label></li> 
 
    </ul> 
 
    </div> 
 
    <div><textarea rows="4" cols="30" placeholder="Coment"></textarea></div> 
 
</form>

+0

什麼應用柔性更新片段:1只到你所需要的元素。像輸入框,textarea等 –

+0

你可以重置包含單選按鈕&複選框的'ul'的* default *'margin'和'padding'爲零? – kukkuz

回答

0

您可以使用column這一點。檢查以下

form { 
 
    width: 100%; 
 
    float: left; 
 
    -webkit-column-count: 2; 
 
    -moz-column-count: 2; 
 
    column-count: 2; 
 
    column-gap: 0.5rem; 
 
} 
 
form > div { 
 
    box-sizing: border-box; 
 
    margin-bottom: 0.5rem; 
 
    break-inside: avoid; 
 

 
} 
 
form > div input:not([type=checkbox]):not([type=radio]), 
 
form > div textarea { 
 
    background-color: rgba(0, 0, 0, 0.1); 
 
    border: 1px solid rgba(0, 0, 0, 0.1); 
 
    padding: 0.25rem; 
 
    min-height: 40px; 
 
    width: 100%; 
 
    box-sizing: border-box; 
 
}
<form> 
 
    <div><input placeholder="First Name" /></div> 
 
    <div><input placeholder="Last Name" /></div> 
 
    <div> 
 
    <ul class="radio_list"> 
 
     <li><input name="form" type="radio" value="0">&nbsp;<label>Male</label></li> 
 
     <li><input name="form" type="radio" value="1">&nbsp;<label>Female</label></li> 
 
     <li><input name="form" type="radio" value="2">&nbsp;<label>gfdg</label></li> 
 
     <li><input name="form" type="radio" value="3">&nbsp;<label>gfdg</label></li> 
 
     <li><input name="form" type="radio" value="4">&nbsp;<label>gfd</label></li> 
 
    </ul> 
 
    </div> 
 
    <div><input placeholder="Phone" type="phone" /></div> 
 
    <div><input placeholder="Email" type="email" /></div> 
 
    <div> 
 
    <ul class="checkbox_list"> 
 
     <li><input name="form_3" type="checkbox" value="0" checked="checked" required="required">&nbsp;<label>Checkbox 1</label></li> 
 
     <li><input name="form_3" type="checkbox" value="1" checked="checked">&nbsp;<label>Checkbox 2</label></li> 
 
     <li><input name="form_3" type="checkbox" value="2" checked="checked">&nbsp;<label>Checkbox 3</label></li> 
 
    </ul> 
 
    </div> 
 
    <div><textarea rows="4" cols="30" placeholder="Coment"></textarea></div> 
 
</form>

+0

很好的答案,但如果我需要全文的'textarea'需求呢? – Muhammed

+0

@MuhammedAthimannil對不起:(在這種情況下,你不能這樣做 –

+0

@SuoerUser這也是我的問題的一部分,但喲迄今給出了很好的解決方案:-) – Muhammed

相關問題