<div class="check">
<input id="check" type="checkbox">
<label for="check"></label>
</div>
:root { font-size: 100px; }
body {
min-height: 100vh;
display: grid;
place-items: center;
}
.check {
position: relative;
background: linear-gradient(90deg, #f19af3, #f099b5);
line-height: 0;
perspective: 400px;
}
.check input[type="checkbox"],
.check label,
.check label::before,
.check label::after,
.check {
appearance: none;
display: inline-block;
border-radius: 1rem;
border: 0;
transition: .35s ease-in-out;
box-sizing: border-box;
cursor: pointer;
}
.check label {
width: 2.2rem;
height: 1rem;
background: #d7d7d7;
overflow: hidden;
}
.check input[type="checkbox"] {
position: absolute;
z-index: 1;
width: .8rem;
height: .8rem;
top: .1rem;
left: .1rem;
background: linear-gradient(45deg, #dedede, #ffffff);
box-shadow: 0 6px 7px rgba(0,0,0,0.3);
outline: none;
}
.check input[type="checkbox"]:checked {
left: 1.3rem;
}
.check input[type="checkbox"]:checked + label {
background: transparent;
}
.check label::before,
.check label::after {
content: "· ·";
position: absolute;
overflow: hidden;
left: .15rem;
top: .5rem;
height: 1rem;
letter-spacing: -.04rem;
color: #9b9b9b;
font-family: "Times New Roman", serif;
z-index: 2;
font-size: .6rem;
border-radius: 0;
transform-origin: 0 0 -.5rem;
backface-visibility: hidden;
}
.check label::after {
content: "●";
top: .65rem;
left: .3rem;
height: .1rem;
width: .35rem;
font-size: .2rem;
transform-origin: 0 0 -.4rem;
}
.check input[type="checkbox"]:checked + label::before,
.check input[type="checkbox"]:checked + label::after {
left: 1.55rem;
top: .4rem;
line-height: .1rem;
transform: rotateY(360deg);
}
.check input[type="checkbox"]:checked + label::after {
height: .16rem;
top: .55rem;
left: 1.6rem;
font-size: .6rem;
line-height: 0;
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.