Previously I used a table to display radio buttons with labels. Now I am trying to do this same thing using only CSS.
What can I do in CSS that will make the label text sit nicely on top of the related radio button? This is the HTML:
<div class="controls">
<label class="radio">
<input type="radio" name="cfimb_5" id="id_cfimb_5_1" value="1">
Never
</label>
<label class="radio">
<input type="radio" name="cfimb_5" id="id_cfimb_5_2" value="2">
</label>
<label class="radio">
<input type="radio" name="cfimb_5" id="id_cfimb_5_3" value="3">
Sometimes
</label>
<label class="radio">
<input type="radio" name="cfimb_5" id="id_cfimb_5_4" value="4">
</label>
<label class="radio">
<input type="radio" name="cfimb_5" id="id_cfimb_5_5" value="5">
Frequently
</label>
</div>
Here is a codepen: http://codepen.io/anon/pen/keuhl
Historically, you could use margins to achieve this layout:
.controls label {
display: inline-block;
width: 90px;
height: 20px;
text-align: center;
vertical-align: top;
padding-top: 40px;
}
.controls input {
display: block;
margin: 0 auto -40px;
}
<div class="controls">
<label class="radio">
<input type="radio" name="foo" value="1">
Never
</label>
<label class="radio">
<input type="radio" name="foo" value="2">
</label>
<label class="radio">
<input type="radio" name="foo" value="3">
Sometimes
</label>
<label class="radio">
<input type="radio" name="foo" value="4">
</label>
<label class="radio">
<input type="radio" name="foo" value="5">
Frequently
</label>
</div>
On modern browsers that support flexbox, the solution is considerably easier:
.controls {
display: flex;
}
.radio {
flex: 1 0 auto;
display: flex;
flex-direction: column;
align-items: center;
}
<div class="controls">
<label class="radio">
<input type="radio" name="foo" value="1">
Never
</label>
<label class="radio">
<input type="radio" name="foo" value="2">
</label>
<label class="radio">
<input type="radio" name="foo" value="3">
Sometimes
</label>
<label class="radio">
<input type="radio" name="foo" value="4">
</label>
<label class="radio">
<input type="radio" name="foo" value="5">
Frequently
</label>
</div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With