--- category: Input created: '2019-11-17' description: Create a switch with CSS flexbox keywords: css custom checkbox, css flexbox, css switch, css switcher thumbnail: /assets/css-layout/thumbnails/switch.png title: Switch --- The checkbox is placed inside a label. So when clicking on the label, the checkbox will be checked even though it's hidden. ## HTML ```html index.html ``` ## CSS ```css styles.css .switch { display: flex; /* Rounded border */ border-radius: 9999px; /* Size */ height: 2rem; width: 4rem; /* Demo */ margin-bottom: 0.5rem; } .switch__input { /* Hide the input */ display: none; } .switch__circle { /* Rounded border */ border-radius: 9999px; /* Size */ width: 2rem; background-color: #fff; } ``` The switch comes with two variants: ```css /* ON status */ .switch--on { background-color: #357edd; border: 1px solid #357edd; /* Push the circle to the right */ justify-content: flex-end; } /* OFF status */ .switch--off { background-color: #d1d5db; border: 1px solid #d1d5db; } .switch--off .switch__circle { border: 1px solid #d1d5db; } ``` ```css styles.css hidden body { align-items: center; display: flex; justify-content: center; } .switch { display: flex; /* Rounded border */ border-radius: 9999px; /* Size */ height: 2rem; width: 4rem; /* Demo */ margin-bottom: 0.5rem; } .switch__input { /* Hide the input */ display: none; } .switch__circle { /* Rounded border */ border-radius: 9999px; /* Size */ width: 2rem; background-color: #fff; } /* ON status */ .switch--on { background-color: #357edd; border: 1px solid #357edd; /* Push the circle to the right */ justify-content: flex-end; } /* OFF status */ .switch--off { background-color: #d1d5db; border: 1px solid #d1d5db; } .switch--off .switch__circle { border: 1px solid #d1d5db; } ``` ```html index.html hidden ```