Jan 5, 2021

In this demo tutorial, we are making the assumption that we need to create a radio slide toggle for our made-up payment options. For this we want to display 3 simple payment choices to the user:

• One-time payment
• Recurring payment
• Free tier payment

## The Final Demo

Let’s get started with the base skeleton.

## The HTML

There isn’t anything special happening here. We just contain all our labels and inputs into a .radio-toggles wrapper, make sure those labels are each properly connected to their corresponding inputs, and then add an empty .slide-item element (more on that later).

## The CSS

Now for the main event – the CSS. First we want to style the wrapper that holds all of our pieces together. You can tweak this to your liking, but I prefer a simple and clean style:

Next, we “hide” (only visually) the default radio inputs:

Then we give the corresponding label elements a little spacing and breathing room:

Remember that .slide-item I referenced earlier? That element will be the visual “slider” that animates between the individual radio options. We style that like so:

You’ll notice the left, height, and width properties utilize the CSS calc attributes – this just gives some much needed padding and visual clean-up to the whole tabbed interface.

For the finishing touches, we just need to tell the .slide-item where to position itself based on which radio input is currently selected:

That’s pretty much it! You now have a fully functional, animated toggle slider with just a set of simple radio inputs and pure CSS.

← Back to all articles

If you would like help support this blog, please consider donating to help keep articles ad-free.
This site is an honorary member of the 1MB Club.