Pure CSS3 Switch Button with Smooth Animation

An amazing effect created only with CSS3 that converts a standard Html checkbox into a toggle button with smooth switching effects.

How to use it:

Create a standard Html checkbox input.

<input type="checkbox">

The CSS.

/* Face Toggle --------------------------------- */
input[type="checkbox"] {
  appearance: none;
  outline: none;
  position: relative;
  margin: auto;
  cursor: pointer;
  width: 10em;
  height: 5em;
  box-sizing: content-box;
  border-radius: 3em / 2.5em;
  box-shadow: 0 3em 2em hsla(0,0%,0%,.1);
  background: hsl(220,20%,36%);
  transition: transform .2s, background .3s;
  transform: perspective(200) rotateY(45deg);
}
input[type="checkbox"]:checked {
  background: hsl(220,80%,70%);
  transform: perspective(200) rotateY(-45deg);
}
input[type="checkbox"]:active {
  transform: perspective(200) scale(.8, .6);
}
/* eye --------------------------------- */
input[type="checkbox"]:after {
  content: "";
  position: absolute;
  width: 4em;
  height: 3em;
  top: 1em;
  left: 1em;
  background-repeat: no-repeat;
  cursor: pointer;
  border-radius: 4em / 3em;
  background-color: hsl(220,20%,20%);
  box-shadow: 0 .2em .5em hsla(0,0%,0%,.2);
  opacity: 0;
  transform: scale(.8, .01);
  transition: opacity .2s, transform .2s;
}
/* eye open --------------------------------- */
input[type="checkbox"]:checked:after {
  background-image: radial-gradient(hsl(220,80%,20%) 15%, hsl(220,80%,80%) 20%, 
    hsl(220,80%,66%) 40%, hsl(220,80%,96%) 44%, 
    hsl(220,80%,80%) );
  opacity: 1;
  transform: translate3d(4em,0,0) scale(1);
}
/* eye poked --------------------------------- */
input[type="checkbox"]:active:after {
  opacity: .5;
  transform: translate3d(2em,0,0) scale(.6, .1);
}
/* txt --------------------------------- */
input[type="checkbox"]:before {
  content: "×";
  position: absolute;
  width: 1.2em;
  top: 0;
  left: .5em;
  font-size: 3em;
  line-height: 1.5;
  color: hsl(220,20%,20%);
  transition: opacity .2s, transform .2s;
}
input[type="checkbox"]:checked:before {
  opacity: 0;
  transform: translate3d(1.5em,0,0);
}
input[type="checkbox"]:active:before {
  opacity: .5;
  transform: translate3d(.8em,0,0);
}
/* BG --------------------------------- */
body {
  display: flex;
  padding: 50px;
  box-sizing: border-box;
  height: 100%;
  background: hsl(220,10%,20%);
  backface-visibility: hidden;
}
html {
  height: 100%;
}
Tags

What do you think?

Leave a Reply

Your email address will not be published. Required fields are marked *

Related articles

Contact us

Partner with Us for Comprehensive IT

We’re happy to answer any questions you may have and help you determine which of our services best fit your needs.

Your benefits:
What happens next?
1

We Schedule a call at your convenience 

2

We do a discovery and consulting meting 

3

We prepare a proposal 

Schedule a Free Consultation