Radio Buttons
HTML
<form action="" method="POST" autocomplete="off" enctype="multipart/form-data">
<!-- Default Radio Button -->
<div class="controls_wrap">
<input type="radio" name="gender" class="radio_button" id="male" value="Male">
<label for="male">Male</label>
<input type="radio" name="gender" class="radio_button" id="female" value="Female">
<label for="female">Female</label>
</div>
<!-- Custom Radio Button -->
<div class="controls_wrap">
<input type="radio" name="options" class="custom_radio_button" id="option1" value="Option 1">
<label for="option1">
<span class="radio_button_design"></span>
<span class="radio_button_text">Option 1</span>
</label>
<input type="radio" name="options" class="custom_radio_button" id="option2" value="Option 1">
<label for="option2">
<span class="radio_button_design"></span>
<span class="radio_button_text">Option 2</span>
</label>
</div>
</form>
CSS
/* Default Radio Button */
.radio_button{position:absolute;left:-999.9rem}
.radio_button + label{display:inline-block;font-size:1.6rem;padding:0 0 0 3rem;margin:0 2rem 1rem 0;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;position:relative}
.radio_button + label::before{content:'';position:absolute;top:0;left:0;right:0;display:block;width:2rem;height:2rem;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;background-color:#fff;border:.1rem solid #ccc;-webkit-transition:all .3s ease;-o-transition:all .3s ease;-moz-transition:all .3s ease;transition:all .3s ease}
.radio_button:checked + label::before{border-color:#09a5be;background-color:#09a5be}
.radio_button:checked + label::after{content:'';position:absolute;top:.2rem;left:.2rem;display:block;width:1.6rem;height:1.6rem;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;background-color:#09a5be;border:.3rem solid #fff}
/* Custom Radio Button */
.custom_radio_button{position:absolute;left:-999.9rem}
.custom_radio_button + label{display:-webkit-inline-box;display:-webkit-inline-flex;display:-moz-inline-box;display:-ms-inline-flexbox;display:inline-flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;font-size:0;margin:0 2rem 1rem 0}
.custom_radio_button + label .radio_button_design{-webkit-box-flex:0;-webkit-flex:0 0 2rem;-moz-box-flex:0;-ms-flex:0 0 2rem;flex:0 0 2rem;width:2rem;height:2rem;border:.1rem solid #ccc;background-color:#fff;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;position:relative;-webkit-transition:all .2s ease;-o-transition:all .2s ease;-moz-transition:all .2s ease;transition:all .2s ease}
.custom_radio_button + label .radio_button_design::before,.custom_radio_button + label .radio_button_design::after{content:"";position:absolute;top:0;left:0;display:block;width:100%;height:100%;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;background-color:#09a5be;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}
.custom_radio_button + label .radio_button_design::before{opacity:1}
.custom_radio_button + label .radio_button_text{display:inline-block;font-size:1.6rem;padding:0 0 0 1rem}
.custom_radio_button:checked + label .radio_button_design{border-color:#09a5be;border-width:.2rem}
.custom_radio_button:checked + label .radio_button_design::before,.custom_radio_button:checked + label .radio_button_design::after{-webkit-transition:all .6s ease;-o-transition:all .6s ease;-moz-transition:all .6s ease;transition:all .6s ease}
.custom_radio_button:checked + label .radio_button_design::before{opacity:0;-webkit-transform:scale(3.5);-moz-transform:scale(3.5);-ms-transform:scale(3.5);-o-transform:scale(3.5);transform:scale(3.5)}
.custom_radio_button:checked + label .radio_button_design::after{-webkit-transform:scale(0.55);-moz-transform:scale(0.55);-ms-transform:scale(0.55);-o-transform:scale(0.55);transform:scale(0.55)}
@media (-ms-high-contrast: none),(-ms-high-contrast: active),(-moz-touch-enabled: 0),(hover: hover) {
.custom_radio_button + label:hover .radio_button_design{border-color:#09a5be}
}
SCSS
/* Vars */
$white: #ffffff;
$grey: #cccccc;
$main: #09a5be;
/* Default Radio Button */
.radio_button {
position: absolute;
left: -999.9rem;
+ label {
display: inline-block;
font-size: 1.6rem;
padding: 0 0 0 3rem;
margin: 0 2rem 1rem 0;
border-radius: 50%;
user-select: none;
cursor: pointer;
position: relative;
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
display: block;
width: 2rem;
height: 2rem;
border-radius: 50%;
background-color: $white;
border: .1rem solid $grey;
transition: all 0.3s ease;
}
}
&:checked + label {
&::before {
border-color: $main;
background-color: $main;
}
&::after {
content: '';
position: absolute;
top: 0.2rem;
left: 0.2rem;
display: block;
width: 1.6rem;
height: 1.6rem;
border-radius: 50%;
background-color: $main;
border: .3rem solid $white;
}
}
}
/* Custom Radio Button */
.custom_radio_button {
position: absolute;
left: -999.9rem;
+ label {
display: inline-flex;
align-items: center;
user-select: none;
cursor: pointer;
font-size: 0;
margin: 0 2rem 1rem 0;
.radio_button_design {
flex: 0 0 2rem;
width: 2rem;
height: 2rem;
border: .1rem solid $grey;
background-color: $white;
border-radius: 50%;
position: relative;
transition: all .2s ease;
&::before, &::after {
content: "";
position: absolute;
top: 0;
left: 0;
display: block;
width: 100%;
height: 100%;
border-radius: 50%;
background-color: $main;
transform: scale(0);
}
&::before {
opacity: 1;
}
}
.radio_button_text {
display: inline-block;
font-size: 1.6rem;
padding:0 0 0 1rem;
}
}
&:checked + label {
.radio_button_design {
border-color: $main;
border-width: .2rem;
&::before, &::after {
transition: all .6s ease;
}
&::before {
opacity: 0;
transform: scale(3.5);
}
&::after {
transform: scale(.55);
}
}
}
}
@media (-ms-high-contrast: none), (-ms-high-contrast: active), (-moz-touch-enabled: 0), (hover: hover) {
.custom_radio_button + label:hover .radio_button_design {border-color: $main}
}