-
-
Save LeaVerou/5078981 to your computer and use it in GitHub Desktop.
| /** | |
| * Switch-style checkboxes. | |
| * Inspired by Espresso’s “Tools” switch | |
| */ | |
| input[type="checkbox"]:not(:checked), | |
| input[type="checkbox"]:checked { /* :checked here acting as a filter for older browsers */ | |
| position: absolute; | |
| opacity: 0; | |
| } | |
| label { | |
| position: relative; | |
| display: inline-block; | |
| margin: 0 1em 1em 0; | |
| font: 75% sans-serif; | |
| text-shadow: 0 1px 1px white; | |
| } | |
| input[type="checkbox"].switch + div { | |
| width: 1.8em; height: 1em; | |
| border: 1px solid rgba(0,0,0,.3); | |
| border-radius: 999px; | |
| margin: 0 auto .8em; | |
| background: #888; | |
| background-image: linear-gradient(rgba(0,0,0,.4), transparent); | |
| background-origin: border-box; | |
| background-clip: border-box; | |
| box-shadow: 0 1px 1px hsla(0,0%,100%,.8); | |
| overflow: hidden; | |
| transition-duration: .4s; | |
| transition-property: padding, width; | |
| } | |
| input[type="checkbox"].switch:checked + div { | |
| padding-left: .8em; | |
| width: 1em; | |
| } | |
| input[type="checkbox"].switch + div:before { | |
| content: ''; | |
| display: block; | |
| width: 1em; height: 1em; | |
| margin: -1px; | |
| border: 1px solid rgba(0,0,0,.7); | |
| border-radius: inherit; | |
| background: #c4c4c4; | |
| background-image: linear-gradient(hsla(0,0%,100%,.3), hsla(0,0%,100%,0)); | |
| box-shadow: 0 0 .5em rgba(0,0,0,.5), | |
| 0 .2em hsla(0,0%,100%,.3) inset, | |
| 0 -.1em .3em hsla(0,0%,0%,.2) inset; | |
| } | |
| input[type="checkbox"].switch:active + div:before { | |
| background-color: #aaa; | |
| } | |
| input[type="checkbox"].switch:focus + div { | |
| box-shadow: 0 0 .3em 1px red, | |
| 0 1px 1px hsla(0,0%,100%,.8); | |
| } | |
| body { | |
| padding: 1em; | |
| background: silver; | |
| } |
| <h2>Smaller</h2> | |
| <label><input type="checkbox" class="switch" />Tools</label> | |
| <label><input type="checkbox" class="switch" checked />Tools</label> | |
| <h2>With larger font-size</h2> | |
| <label style="font-size:200%"><input type="checkbox" class="switch" />Tools</label> | |
| <label style="font-size:200%"><input type="checkbox" class="switch" checked />Tools</label> |
| var switches = document.querySelectorAll('input[type="checkbox"].switch'); | |
| for (var i=0, sw; sw = switches[i++]; ) { | |
| var div = document.createElement('div'); | |
| div.className = 'switch'; | |
| sw.parentNode.insertBefore(div, sw.nextSibling); | |
| } |
| {"view":"split-vertical","fontsize":"100","seethrough":"","prefixfree":"1","page":"css"} |
the url rule is http://dabblet.com/gist/:gist_id . So you can see the demo at http://dabblet.com/gist/5078981
yeah, i saw the pretty switch.
Thanks @kkxlkkxllb
I dont know about url thing :)
I love it! For IE10 compatibility you should add padding-left: 0 to input[type="checkbox"].switch + div. It doesn't transition from nothing to a value. Like so: http://dabblet.com/gist/5154951
I was messing with your dabblet and removed :not(:checked) and :checked from the first selector and kept just input[type=checkbox] then removed all instances input[type=checkbox] that preceded .switch and the dabblet still worked. I'm curious if you over qualified the selectors for the purpose of the demo or if there is a cross-device or cross-platform advantage of writing it that way? (btw I really love how the slide waits for the tap. very clean)
How I can see this in dabblet?
there is no url. I guess it will be great if it add the dabblet url in the top of css comments.