/** * iOS 6 style switch checkboxes * by Lea Verou http://lea.verou.me */ :root input[type="checkbox"] { /* :root here acting as a filter for older browsers */ position: absolute; opacity: 0; } :root input[type="checkbox"].ios-switch + div { display: inline-block; vertical-align: middle; width: 3em; height: 1em; border: 1px solid rgba(0,0,0,.3); border-radius: 999px; margin: 0 .5em; background: white; background-image: linear-gradient(rgba(0,0,0,.1), transparent), linear-gradient(90deg, hsl(210, 90%, 60%) 50%, transparent 50%); background-size: 200% 100%; background-position: 100% 0; background-origin: border-box; background-clip: border-box; overflow: hidden; transition-duration: .1s; transition-property: padding, width, background-position, text-indent; box-shadow: 0 .1em .1em rgba(0,0,0,.2) inset, 0 .45em 0 .1em rgba(0,0,0,.05) inset; font-size: 150%; /* change this and see how they adjust! */ } :root input[type="checkbox"].ios-switch:checked + div { padding-left: 2em; /*width: 1em;*/ background-position: 0 0; } :root input[type="checkbox"].ios-switch + div:before { content: ''; float: left; width: 1.3em; height: 1.3em; margin: .15em; border: 1px solid rgba(0,0,0,.35); border-radius: inherit; background: white; background-image: linear-gradient(rgba(0,0,0,.2), transparent); box-shadow: 0 .1em .1em .1em hsla(0,0%,100%,.8) inset, 0 0 .5em rgba(0,0,0,.3); color: white; text-shadow: 0 -1px 1px rgba(0,0,0,.3); text-indent: -2.5em; } :root input[type="checkbox"].ios-switch:active + div:before { background-color: #eee; } :root input[type="checkbox"].ios-switch:focus + div { box-shadow: 0 .1em .1em rgba(0,0,0,.2) inset, 0 .45em 0 .1em rgba(0,0,0,.05) inset, 0 0 .4em 1px rgba(255,0,0,.5); } :root input[type="checkbox"].ios-switch + div:before, :root input[type="checkbox"].ios-switch + div:after { font: bold 60%/1.9 sans-serif; text-transform: uppercase; } :root input[type="checkbox"].ios-switch + div:after { content: ''; float: left; text-indent: .5em; color: rgba(0,0,0,.45); text-shadow: none; } /* Switch code ends here, from now on it’s just bling for the demo page */ body { padding: 1em; background: #d2d4dd; background-image: linear-gradient(90deg, transparent 30%, rgba(0,0,0,.02) 45%, rgba(0,0,0,.02) 55%, transparent 70%); background-size: 8px 8px; font: 100%/1.5 sans-serif; text-shadow: 0 1px 1px white; }