- const DOLLS = 6
form.dolls
  - let d = 0
  while d < DOLLS
    - if (d !== (DOLLS - 1))
      input(id=`doll--${d}`, type='checkbox')
    label.doll(for=`doll--${d}`, style=`${d === 0 ? 'display: block;' : ''}`)= d
    - d++
  input(type="reset", id="reset")
  label(for="reset") Reset
View Compiled
:root
  --speed 0.25
  --slide-distance 60
  --base-width 100
  --base-slide calc(var(--base-width) * 1)

  @media(min-width 768px)
    --base-width 300

body
  align-items center
  background #fafafa
  display flex
  justify-content center
  min-height 100vh
  transform-style preserve-3d

::selection
  background transparent

form
  position relative
  height 200px
  width 100px

label
  display none
  
[type='checkbox']
[type='reset']
  display none
  
[for='reset']
  cursor pointer
  display block
  position fixed
  top 1rem
  right 1rem

.doll
  color #fff
  cursor pointer
  height 200px
  font-size 2rem
  position absolute
  text-align center
  width 100px

  &:nth-of-type(even)
    background blue
  &:nth-of-type(odd)
    background red

input:checked + label + input + label
input:checked + label + label
  display block

input:checked + label
  animation slideLeft calc(var(--speed) * 1s) forwards
  pointer-events none
  
@keyframes slideLeft
  to
    transform translate(calc((var(--base-slide) * -1px) + var(--slide-distance) * -1%), 0)
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.