#212121
1/* switch settings π */ 2 3.ui-switch { 4 /* switch */ 5 --switch-bg: rgb(135, 150, 165); 6 --switch-width: 48px; 7 --switch-height: 20px; 8 /* circle */ 9 --circle-diameter: 32px; 10 --circle-bg: rgb(0, 56, 146); 11 --circle-inset: calc((var(--circle-diameter) - var(--switch-height)) / 2); 12} 13 14.ui-switch input { 15 display: none; 16} 17 18.slider { 19 -webkit-appearance: none; 20 -moz-appearance: none; 21 appearance: none; 22 width: var(--switch-width); 23 height: var(--switch-height); 24 background: var(--switch-bg); 25 border-radius: 999px; 26 position: relative; 27 cursor: pointer; 28} 29 30.slider .circle { 31 top: calc(var(--circle-inset) * -1); 32 left: 0; 33 width: var(--circle-diameter); 34 height: var(--circle-diameter); 35 position: absolute; 36 background: var(--circle-bg); 37 border-radius: inherit; 38 background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxwYXRoIGZpbGw9IiNmZmYiCiAgICAgICAgZD0iTTkuMzA1IDEuNjY3VjMuNzVoMS4zODlWMS42NjdoLTEuMzl6bS00LjcwNyAxLjk1bC0uOTgyLjk4Mkw1LjA5IDYuMDcybC45ODItLjk4Mi0xLjQ3My0xLjQ3M3ptMTAuODAyIDBMMTMuOTI3IDUuMDlsLjk4Mi45ODIgMS40NzMtMS40NzMtLjk4Mi0uOTgyek0xMCA1LjEzOWE0Ljg3MiA0Ljg3MiAwIDAwLTQuODYyIDQuODZBNC44NzIgNC44NzIgMCAwMDEwIDE0Ljg2MiA0Ljg3MiA0Ljg3MiAwIDAwMTQuODYgMTAgNC44NzIgNC44NzIgMCAwMDEwIDUuMTM5em0wIDEuMzg5QTMuNDYyIDMuNDYyIDAgMDExMy40NzEgMTBhMy40NjIgMy40NjIgMCAwMS0zLjQ3MyAzLjQ3MkEzLjQ2MiAzLjQ2MiAwIDAxNi41MjcgMTAgMy40NjIgMy40NjIgMCAwMTEwIDYuNTI4ek0xLjY2NSA5LjMwNXYxLjM5aDIuMDgzdi0xLjM5SDEuNjY2em0xNC41ODMgMHYxLjM5aDIuMDg0di0xLjM5aC0yLjA4NHpNNS4wOSAxMy45MjhMMy42MTYgMTUuNGwuOTgyLjk4MiAxLjQ3My0xLjQ3My0uOTgyLS45ODJ6bTkuODIgMGwtLjk4Mi45ODIgMS40NzMgMS40NzMuOTgyLS45ODItMS40NzMtMS40NzN6TTkuMzA1IDE2LjI1djIuMDgzaDEuMzg5VjE2LjI1aC0xLjM5eiIgLz4KPC9zdmc+"); 39 background-repeat: no-repeat; 40 background-position: center center; 41 -webkit-transition: left 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; 42 -o-transition: left 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; 43 transition: left 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; 44 display: -webkit-box; 45 display: -ms-flexbox; 46 display: flex; 47 -webkit-box-align: center; 48 -ms-flex-align: center; 49 align-items: center; 50 -webkit-box-pack: center; 51 -ms-flex-pack: center; 52 justify-content: center; 53 box-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12); 54 ; 55} 56 57.slider .circle::before { 58 content: ""; 59 position: absolute; 60 width: 100%; 61 height: 100%; 62 background: rgba(255, 255, 255, 0.75); 63 border-radius: inherit; 64 -webkit-transition: all 500ms; 65 -o-transition: all 500ms; 66 transition: all 500ms; 67 opacity: 0; 68} 69 70/* actions */ 71 72.ui-switch input:checked+.slider .circle { 73 left: calc(100% - var(--circle-diameter)); 74 background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxwYXRoIGZpbGw9IiNmZmYiCiAgICAgICAgZD0iTTQuMiAyLjVsLS43IDEuOC0xLjguNyAxLjguNy43IDEuOC42LTEuOEw2LjcgNWwtMS45LS43LS42LTEuOHptMTUgOC4zYTYuNyA2LjcgMCAxMS02LjYtNi42IDUuOCA1LjggMCAwMDYuNiA2LjZ6IiAvPgo8L3N2Zz4="); 75} 76 77.ui-switch input:active+.slider .circle::before { 78 -webkit-transition: 0s; 79 -o-transition: 0s; 80 transition: 0s; 81 opacity: 1; 82 width: 0; 83 height: 0; 84}
Β
Comments
Variations
1 MIT License