CSSAdd prefixes
1.radio-group { 2 display: flex; 3 flex-direction: column; 4} 5 6.radio-button { 7 display: flex; 8 align-items: center; 9 margin-bottom: 15px; 10 cursor: pointer; 11} 12 13.radio-icon { 14 width: 20px; 15 height: 20px; 16 margin-right: 10px; 17 fill: #fff; 18 transition: all 0.3s ease-in-out; 19} 20 21.radio-button:hover .radio-icon { 22 transform: scale(1.2); 23 fill: #2ed573; 24} 25 26.radio-button input[type="radio"] { 27 opacity: 0; 28 position: absolute; 29} 30 31.radio-text { 32 font-size: 18px; 33 color: #fff; 34 font-weight: bold; 35} 36 37.radio-button::before { 38 content: ""; 39 display: inline-block; 40 width: 20px; 41 height: 20px; 42 border-radius: 50%; 43 border: 2px solid #fff; 44 margin-right: 10px; 45 transition: all 0.3s ease-in-out; 46} 47 48.radio-button:hover .radio-text { 49 font-size: 18px; 50 color: #2ed573; 51 font-weight: bold; 52} 53 54.radio-button:hover::before { 55 border: 2px solid #2ed573; 56} 57 58.radio-button input[type="radio"]:checked + .radio-icon { 59 fill: #2ed573; 60} 61 62.radio-button input[type="radio"]:checked + .radio-icon circle:last-child { 63 opacity: 1; 64} 65
HTML
1<div class="radio-group"> 2 <label class="radio-button"> 3 <input type="radio" name="radio" value="option1"> 4 <svg class="radio-icon" viewBox="0 0 24 24"> 5 <circle cx="12" cy="12" r="8"></circle> 6 <circle cx="12" cy="12" r="5"></circle> 7 </svg> 8 <div class="radio-text">Option 1</div> 9 </label> 10 <label class="radio-button"> 11 <input type="radio" name="radio" value="option2"> 12 <svg class="radio-icon" viewBox="0 0 24 24"> 13 <circle cx="12" cy="12" r="8"></circle> 14 <circle cx="12" cy="12" r="5"></circle> 15 </svg> 16 <div class="radio-text">Option 2</div> 17 </label> 18 <label class="radio-button"> 19 <input type="radio" name="radio" value="option3"> 20 <svg class="radio-icon" viewBox="0 0 24 24"> 21 <circle cx="12" cy="12" r="8"></circle> 22 <circle cx="12" cy="12" r="5"></circle> 23 </svg> 24 <div class="radio-text">Option 3</div> 25 </label> 26</div> 27
