Create a stunning radio button in CSS with the below steps. The radio buttons are useful when there are a lot of options and the user must select a single option.
Why style radio button with CSS?
The default radio button will make your website look old and ugly. We use CSS to solve UI-related problems and give animation to HTML elements. That is why we use CSS to style our HTML elements.
Let’s start
First here is the output
Also read: CSS hover effect on Image
How to create a stunning radio button in CSS?
Step 1:
First, we will write HTML code to make the default radio button
Here is the HTML code
<div class="container">
<h2>Your Favourite</h2>
<div class="inner-container">
<div class="btn-container">
<input type="radio" name="language" id="flutter" checked />
<label for="flutter">Flutter</label>
<div class="check"></div>
<br />
</div>
<div class="btn-container">
<input type="radio" name="language" id="react" />
<label for="react">React</label>
<div class="check"></div>
<br />
</div>
</div>
</div>
Altho this code is self-explanatory, I will explain the work of this code.
First, we created a container, then we have a group of radio buttons with the same name.
Step 2:
Next, we will write some CSS to give it stunning animation.
html,
body {
height: 100%;
padding: 0;
margin: 0;
}
body {
display: flex;
justify-content: center;
align-items: center;
font-family: "Raleway", sans-serif;
background-color: royalblue;
}
.container {
display: flex;
flex-direction: column;
padding: 20px 25px;
width: 300px;
background-color: white;
border-radius: 20px;
box-shadow: 0 19px 38px rgba(0, 0, 0, 0.13);
}
.inner-container {
padding-left: 50px;
margin: 0;
}
.btn-container {
display: block;
position: relative;
padding: 20px 0;
}
h2 {
margin: 10px 0;
font-weight: 900;
}
input[type="radio"] {
position: absolute;
visibility: hidden;
}
label {
cursor: pointer;
font-weight: 400;
}
.check {
width: 30px;
height: 30px;
position: absolute;
border-radius: 50%;
transition: transform 0.6s cubic-bezier(0.68, -0.55, 0.27, 1.55);
}
First, we will give Html and body elements 100% height and then give 0 margins and 0 paddings.
We give a display type of flex to the body element,
So we can use justify-content and align-items property to the center container. Then we give it a background color.
Next, we make the container look like a card by giving it a border radius and box shadow.
Step 3:
Now, we will give it some animation with the below code
input#flutter ~ .check {
transform: translate(-50px, -25px);
background-color: lightblue;
}
input#react ~ .check {
transform: translate(-50px, -83px);
background-color: blue;
box-shadow: 0 6px 12px rgba(0, 0, 255, 0.5);
}
input#flutter:checked ~ .check {
transform: translate(-50px, 33px);
}
input#react:checked ~ .check {
transform: translate(-50px, -25px);
}
Here we used a div to make those circles and then animated them.
How does this CSS animation work?
Here we first position option 1 circle to option 2 circles and option 2 circles to option 1 circle,
When the use clicks option 2 then we change option 2 circle position to its original position.
When the user clicks option 1 then we change option 1 circle position to option 2 circle position.
Boom! you have it. A Stunning radio button in CSS.
Please do comment and share this post. This motivates me to write more posts/tutorials.