HTML
SCSS
JS
Result
Skip Results Iframe
EDIT ON
Live
Live
Live
This Pen is owned by
Nicolas Jesenberger
on
CodePen
.
See more by @nicolasjesenberger on CodePen
External CSS
https://codepen.io/nicolasjesenberger/pen/GRYvOWy/d5176f9552830811da3e2bde0120cc26.css
External JavaScript
https://codepen.io/nicolasjesenberger/pen/VwEzMrY/81eb6139c2c9b7dbc46e43d898e7d29b.js
{"__browser":{"country":"US","device":"unknown_device","mobile":false,"name":"unknown browser","platform":"unknown_platform","version":"0"},"__constants":{},"__CPDATA":{"domain_iframe":"https://cdpn.io","environment":"production","host":"codepen.io","iframe_allow":"accelerometer *; ambient-light-sensor *; camera *; display-capture *; encrypted-media *; geolocation *; gyroscope *; microphone *; midi *; payment *; serial *; vr *; web-share *; xr-spatial-tracking *","iframe_sandbox":"allow-downloads allow-forms allow-modals allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-presentation allow-same-origin allow-scripts allow-top-navigation-by-user-activation"},"__graphql":{"data":{"errors":[{"message":"Cannot return null for non-nullable field Query.sessionUser"}],"data":null},"url":"https://codepen.io/graphql","api":"cprails"},"__pay_stripe_public_key":"pk_live_2GndomDfiklqpSNQn8FrGuwZSMIMzha7DkLJqlYe7IR0ihKAlKdiHg68JJc5eVPt68rzAjzAAVXcUwjySHRCsgjQQ00gtRBUFNH","__pay_braintree_env":"production","__boomboom":{"serve_url":"https://cdpn.io/cpe/boomboom","store_url":"https://codepen.io/cpe/boomboom/store"},"__pageType":"embed","__item":"{\"editor_settings\":{\"auto_run\":true,\"autocomplete\":false,\"code_folding\":true,\"css_pre_processor\":\"none\",\"css_prefix\":\"neither\",\"css_starter\":\"neither\",\"emmet_active\":true,\"font_size\":14,\"font_type\":\"system\",\"format_on_save\":false,\"html_pre_processor\":\"none\",\"indent_with\":\"spaces\",\"js_pre_processor\":\"none\",\"key_bindings\":\"normal\",\"line_numbers\":true,\"line_wrapping\":true,\"match_brackets\":true,\"snippets\":{\"markupSnippets\":{},\"stylesheetSnippets\":{}},\"tab_size\":2,\"theme\":\"twilight\",\"id\":\"WNaqEgp\",\"auto_save\":true},\"hashid\":\"WNaqEgp\",\"itemType\":\"pen\",\"resources\":[{\"url\":\"https://codepen.io/nicolasjesenberger/pen/GRYvOWy/d5176f9552830811da3e2bde0120cc26.css\",\"order\":0,\"resource_type\":\"css\",\"par_content\":\"\"},{\"url\":\"https://codepen.io/nicolasjesenberger/pen/VwEzMrY/81eb6139c2c9b7dbc46e43d898e7d29b.js\",\"order\":0,\"resource_type\":\"js\",\"par_content\":\"\"}],\"tags\":[\"skeuomorphic\",\"toggle\",\"skeuomorphism\",\"cpc-toggles\",\"codepenchallenges\"],\"id\":68727560,\"user_id\":4175254,\"html\":\"<div class=\\\"toggle\\\">\\n <input class=\\\"toggle-input\\\" type=\\\"checkbox\\\">\\n <div class=\\\"toggle-handle-wrapper\\\">\\n <div class=\\\"toggle-handle\\\">\\n <div class=\\\"toggle-handle-knob\\\"></div>\\n <div class=\\\"toggle-handle-bar-wrapper\\\">\\n <div class=\\\"toggle-handle-bar\\\"></div>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"toggle-base\\\">\\n <div class=\\\"toggle-base-inside\\\"></div>\\n </div>\\n</div>\\n\\n<div class=\\\"toggle\\\">\\n <input class=\\\"toggle-input\\\" type=\\\"checkbox\\\" checked>\\n <div class=\\\"toggle-handle-wrapper\\\">\\n <div class=\\\"toggle-handle\\\">\\n <div class=\\\"toggle-handle-knob\\\"></div>\\n <div class=\\\"toggle-handle-bar-wrapper\\\">\\n <div class=\\\"toggle-handle-bar\\\"></div>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"toggle-base\\\">\\n <div class=\\\"toggle-base-inside\\\"></div>\\n </div>\\n</div>\",\"css\":\"body {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n min-height: 100vh;\\n font-size: 2em;\\n row-gap: 2em;\\n}\\n\\n$knob-size: 1.75em;\\n\\n.toggle {\\n display: flex;\\n justify-content: center;\\n position: relative;\\n}\\n\\n.toggle-input {\\n position: absolute;\\n z-index: 2;\\n bottom: 132.5%;\\n border-radius: 50%;\\n transform: rotate(-25deg);\\n transform-origin: 50% 4.75em;\\n width: $knob-size;\\n height: $knob-size;\\n opacity: 0;\\n transition: transform .24s cubic-bezier(.65, 1.35, .5, 1);\\n cursor: pointer;\\n \\n &:checked {\\n transform: rotate(25deg);\\n }\\n}\\n\\n.toggle-handle-wrapper {\\n position: absolute;\\n z-index: 1;\\n bottom: -135%;\\n -webkit-mask-image: linear-gradient(to bottom, #000 62.125%, transparent 50%);\\n mask-image: linear-gradient(to bottom, #000 62.125%, transparent 50%);\\n width: 200%;\\n overflow: hidden;\\n}\\n\\n.toggle-handle {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n transform: rotate(-25deg);\\n transform-origin: bottom center;\\n transition: transform .24s cubic-bezier(.65, 1.35, .5, 1);\\n \\n .toggle-input:checked + .toggle-handle-wrapper > & {\\n transform: rotate(25deg);\\n }\\n}\\n\\n.toggle-handle-knob {\\n position: relative;\\n z-index: 1;\\n border-radius: 50%;\\n width: $knob-size;\\n height: $knob-size;\\n background-image: radial-gradient(farthest-corner at 70% 30%, #fedee2 4%, #d63534 12% 24%, #a81a1a 50% 65%, #d63534 75%);\\n transition: transform .24s cubic-bezier(.65, 1.35, .5, 1);\\n \\n .toggle-input:checked + .toggle-handle-wrapper & {\\n transform: rotate(-90deg);\\n }\\n \\n &::after {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n border-radius: inherit;\\n width: 100%;\\n height: 100%;\\n box-shadow: inset 0 0 8px 2px rgb(255 255 255 / .4);\\n opacity: 0;\\n transition: opacity .2s;\\n \\n @media (hover: hover) {\\n @at-root {\\n .toggle-input:hover + .toggle-handle-wrapper &,\\n .toggle-input:focus-visible + .toggle-handle-wrapper & {\\n opacity: 1;\\n }\\n }\\n }\\n }\\n}\\n\\n.toggle-handle-bar-wrapper {\\n position: relative;\\n width: .5em;\\n height: 3em;\\n}\\n\\n.toggle-handle-bar {\\n position: absolute;\\n top: -($knob-size / 2);\\n left: 0;\\n width: 100%;\\n height: calc(100% + #{$knob-size / 2});\\n background-image: linear-gradient(to right, #777475, #a4a4a4, #fff 45% 55%, #a4a4a4, #777475);\\n background-position-x: .06125em;\\n transition: background-position-x .24s cubic-bezier(.65, 1.35, .5, 1);\\n box-shadow: inset 0 1em .25em rgb(0 0 0 / .4);\\n \\n .toggle-input:checked + .toggle-handle-wrapper & {\\n background-position-x: -.06125em;\\n }\\n}\\n\\n.toggle-base {\\n position: relative;\\n border-radius: 3.125em;\\n padding: .25em;\\n width: 3.5em;\\n height: 1.125em;\\n background-color: #fff;\\n background-image: linear-gradient(to bottom, #fff, #d7d7d7);\\n box-shadow:\\n 0 -.25em .5em #fff,\\n 0 .25em .5em #d7d7d7,\\n ;\\n}\\n\\n.toggle-base-inside {\\n position: relative;\\n border-radius: inherit;\\n width: 100%;\\n height: 100%;\\n background-image: linear-gradient(to bottom, #a6a6a6, #7d7d7d);\\n box-shadow:\\n inset 0 .0625em rgb(255 255 255 / .2),\\n inset 0 -.03125em rgb(255 255 255 / 1),\\n inset 0 -.0625em .25em rgb(0 0 0 / .1),\\n ;\\n \\n // toggle base inside active\\n &::after {\\n content: '';\\n position: absolute;\\n border-radius: inherit;\\n width: 100%;\\n height: 100%;\\n background-image: linear-gradient(to bottom, #5ab054, #438c3c);\\n box-shadow: inherit;\\n opacity: 0;\\n transition: opacity .24s cubic-bezier(.65, 1.35, .5, 1);\\n \\n @at-root .toggle-input:checked ~ .toggle-base & {\\n opacity: 1;\\n }\\n }\\n}\",\"js\":\"// Design by @sanbronliong on Twitter\",\"html_pre_processor\":\"none\",\"css_pre_processor\":\"scss\",\"js_pre_processor\":\"none\",\"html_classes\":\"\",\"css_starter\":\"neither\",\"js_library\":null,\"created_at\":\"2023-05-31T17:14:30.703Z\",\"updated_at\":\"2023-06-12T10:48:02.729Z\",\"title\":\"Skeuomorphic Toggle Switch (vol. 4)\",\"description\":\"Design by @sanbronliong on Twitter\",\"slug_hash\":\"WNaqEgp\",\"head\":\"\",\"private\":false,\"has_animation\":false,\"team_id\":0,\"css_prefix\":\"neither\",\"template\":false,\"parent_id\":0,\"comments_count\":0,\"custom_screenshot_filename\":null,\"loves_count\":92,\"pick\":false,\"popularity\":945,\"views_count\":4849,\"pick_visible_at\":null,\"cpid\":\"018872cd-cfaf-7b80-bc3b-f6f4cb71f72d\",\"is_new_editor_pen\":false,\"access\":\"Public\",\"pen_hash\":null}","__processorsMap":{"autoprefixer":"autoprefixer-10","babel":"babel-7","coffeescript":"coffeescript-2","format-1":"format-1","flutter":"flutter-1","haml":"haml-4","less":"less-3","lint-1":"lint-1","livescript":"livescript-1","markdown":"markdown-11","postcss":"postcss-7","pug":"pug-2","sass":"sass-1","scss":"sass-1","sass-ruby-3":"sass-ruby-3","sass-ruby-compass-3":"sass-ruby-compass-3","slim":"slim-3","stylus":"stylus-0","typescript":"typescript-4","vue":"vue-2","vue3":"vue-3"},"__favicon_mask_icon":"https://cpwebassets.codepen.io/assets/favicon/logo-pin-b4b4269c16397ad2f0f7a01bcdf513a1994f4c94b8af2f191c09eb0d601762b1.svg","__favicon_shortcut_icon":"https://cpwebassets.codepen.io/assets/favicon/favicon-aec34940fbc1a6e787974dcd360f2c6b63348d4b1f4e06c77743096d55480f33.ico","__path_to_iframe_console_runner":"https://cpwebassets.codepen.io/assets/editor/iframe/iframeConsoleRunner-6d8bf8b4b479137260842506acbb12717dace0823c023e08b96360e60b0840d9.js","__path_to_iframe_refresh_css":"https://cpwebassets.codepen.io/assets/editor/iframe/iframeRefreshCSS-44fe83e49b63affec96918c9af88c0d80b209a862cf87ac46bc933074b8c557d.js","__path_to_iframe_runtime_errors":"https://cpwebassets.codepen.io/assets/editor/iframe/iframeRuntimeErrors-4f205f2c14e769b448bcf477de2938c681660d5038bc464e3700256713ebe261.js","__path_to_processor_worker":"https://cpwebassets.codepen.io/assets/packs/router.js","__path_to_stop_execution_on_timeout":"https://cpwebassets.codepen.io/assets/common/stopExecutionOnTimeout-2c7831bb44f98c1391d6a4ffda0e1fd302503391ca806e7fcc7b9b87197aec26.js","__pen_normalize_css_url":"https://public.codepenassets.com/css/normalize-5.0.0.min.css","__pen_prefix_free_url":"https://public.codepenassets.com/js/prefixfree-1.0.7.min.js","__pen_reset_css_url":"https://public.codepenassets.com/css/reset-2.0.min.css"}