Вам нужно обернуть input type="radio"
внутри элемента label
, чтобы с помощью псевдокласса :checked
в CSS выбирать элементы, когда они находятся в выбранном состоянии, и следовать за оператором tilde(~)
для перехода к элементу ввода. стиль.
Надеюсь, приведенный ниже фрагмент поможет вам.
.gender{
font-family: Arial;
display: flex;
flex-wrap: wrap;
width: 100%;
}
.gender label{
position: relative;
margin: 4px 15px 4px 0;
display: inline-flex;
justify-content: center;
align-items: center;
cursor: pointer;
}
.gender input{
opacity: 0;
position: absolute;
left: 0;
top: 0;
}
.gender label span{
display: block;
text-align: center;
width: 100%;
background: #fff;
border: 1px solid #ccc;
color: #bababa;
font-size: 14px;
border-radius: 4px;
padding: 10px 20px;
min-width: 70px;
transition: 350ms;
}
.gender label:hover span, .gender label:hover span:before{
border: 1px solid #777;
color: #777;
}
.gender label span:before{
content: '';
position: absolute;
width: 12px;
height: 12px;
border-radius: 50%;
top: 50%;
margin-top: -7px;
left: 10px;
border: 1px solid #ccc;
transition: 500ms;
}
.gender input:checked ~ span{
color: blue;
border: 1px solid blue;
}
.gender label input:checked ~ span:before{
background: blue;
border: 1px solid blue;
}
<div>
<h3>Gender</h3>
<div class="gender">
<label>
<input type="radio" name="gender" value="Male" checked>
<span>Male</span>
</label>
<label>
<input type="radio" name="gender" value="Female">
<span>Female</span>
</label>
<label>
<input type="radio" name="gender" value="Others">
<span>Others</span>
</label>
</div>
</div>