<link href='https://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
<div class="container">
<h2>
Check it out!
</h2>
<input type="checkbox" id="cbtest" />
<label for="cbtest" class="check-box"></label>
<p>
Only an input and a label, and no javascript needed!
<br />
Or without an input, just add the class "checked" to start the animation.
<br>
Tested with: IE9+, Chrome, FF
</p>
</div>
/* Made by Jimmy Gillam */
$checked-color: #34b93d;
$unchecked-color: #000;
$checkbox-height: 100px;
$background-color:#667788;
$font-color:#efefef;
$duration: .4s;
html, body{
padding:0;
margin:0;
background-color:$background-color;
color:$font-color;
font-family:'Open Sans';
}
.container{
box-sizing: border-box;
padding:25px;
text-align:center;
h2{
margin-bottom:40px;
}
p{
margin-top:40px;
}
}
/* Checkmark style starts */
@-moz-keyframes dothabottomcheck{
0% { height: 0; }
100% { height: $checkbox-height/2; }
}
@-webkit-keyframes dothabottomcheck{
0% { height: 0; }
100% { height: $checkbox-height/2; }
}
@keyframes dothabottomcheck{
0% { height: 0; }
100% { height: $checkbox-height/2; }
}
@keyframes dothatopcheck{
0% { height: 0; }
50% { height: 0; }
100% { height: $checkbox-height * 1.2; }
}
@-webkit-keyframes dothatopcheck{
0% { height: 0; }
50% { height: 0; }
100% { height: $checkbox-height * 1.2; }
}
@-moz-keyframes dothatopcheck{
0% { height: 0; }
50% { height: 0; }
100% { height: $checkbox-height * 1.2; }
}
input[type=checkbox]{
display:none;
}
.check-box {
height: $checkbox-height;
width: $checkbox-height;
background-color: transparent;
border: $checkbox-height * .1 solid $unchecked-color;
border-radius: 5px;
position: relative;
display: inline-block;
box-sizing: border-box;
box-sizing: border-box;
box-sizing: border-box;
transition: border-color ease $duration/2;
transition: border-color ease $duration/2;
transition: border-color ease $duration/2;
transition: border-color ease $duration/2;
cursor:pointer;
&::before, &::after {
box-sizing: border-box;
box-sizing: border-box;
box-sizing: border-box;
position: absolute;
height: 0;
width: $checkbox-height * .2;
background-color: $checked-color;
display: inline-block;
transform-origin: left top;
transform-origin: left top;
transform-origin: left top;
transform-origin: left top;
transform-origin: left top;
border-radius: 5px;
content: ' ';
transition: opacity ease .5;
transition: opacity ease .5;
transition: opacity ease .5;
}
&::before {
top:$checkbox-height * .72;
left: $checkbox-height * .41;
box-shadow: 0 0 0 $checkbox-height * .05 $background-color;
transform: rotate(-135deg);
transform: rotate(-135deg);
transform: rotate(-135deg);
transform: rotate(-135deg);
transform: rotate(-135deg);
}
&::after {
top: $checkbox-height * .37;
left: $checkbox-height * .05;
transform: rotate(-45deg);
transform: rotate(-45deg);
transform: rotate(-45deg);
transform: rotate(-45deg);
transform: rotate(-45deg);
}
}
input[type=checkbox]:checked + .check-box,
.check-box.checked{
border-color:$checked-color;
&::after{
height: $checkbox-height * .5;
animation: dothabottomcheck $duration/2 ease 0s forwards;
animation: dothabottomcheck $duration/2 ease 0s forwards;
animation: dothabottomcheck $duration/2 ease 0s forwards;
animation: dothabottomcheck $duration/2 ease 0s forwards;
}
&::before{
height: $checkbox-height * 1.2;
animation: dothatopcheck $duration ease 0s forwards;
animation: dothatopcheck $duration ease 0s forwards;
animation: dothatopcheck $duration ease 0s forwards;
animation: dothatopcheck $duration ease 0s forwards;
}
}
View Compiled
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.