HTML
Less
Result
Skip Results Iframe
EDIT ON
Live
Live
This Pen is owned by
Aanjulena Sweet
on
CodePen
.
See more by @aanjulena on CodePen
External CSS
https://fonts.googleapis.com/css?family=Montserrat:200,300,400,600,700
https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css
External JavaScript
https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js
https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/js/bootstrap.min.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 *; vr *; web-share *; serial *; xr-spatial-tracking *","iframe_sandbox":"allow-downloads allow-forms allow-modals allow-pointer-lock allow-popups-to-escape-sandbox allow-popups 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\":\"ZLZjzV\",\"auto_save\":true},\"hashid\":\"ZLZjzV\",\"itemType\":\"pen\",\"resources\":[{\"url\":\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js\",\"order\":0,\"resource_type\":\"js\",\"par_content\":\"\"},{\"url\":\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/js/bootstrap.min.js\",\"order\":1,\"resource_type\":\"js\",\"par_content\":\"\"},{\"url\":\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css\",\"order\":1,\"resource_type\":\"css\",\"par_content\":\"\"},{\"url\":\"https://fonts.googleapis.com/css?family=Montserrat:200,300,400,600,700\",\"order\":0,\"resource_type\":\"css\",\"par_content\":\"\"}],\"tags\":[\"bootstrap\",\"toggle\",\"switch\",\"css\",\"button\"],\"id\":12925367,\"user_id\":157003,\"html\":\"<div class=\\\"jumbotron\\\">\\n <h1>On/Off Switch</h1>\\n <p class=\\\"lead\\\">Bootstrap Button Toggle</p>\\n</div>\\n\\n<div class=\\\"container example\\\">\\n \\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <h3>Default Color <small>(Brand Primary)</small></h3>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\">\\n\\n <div class=\\\"col-sm-2\\\">\\n <h6>Large</h6>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-lg btn-toggle\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"false\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-lg btn-toggle active\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"true\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n </div>\\n\\n <div class=\\\"row\\\">\\n\\n <div class=\\\"col-sm-2\\\">\\n <h6>Default</h6>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-toggle\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"false\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-toggle active\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"true\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n </div>\\n\\n <div class=\\\"row\\\">\\n\\n <div class=\\\"col-sm-2\\\">\\n <h6>Small</h6>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-toggle\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"false\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-toggle active\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"true\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n </div>\\n\\n <div class=\\\"row\\\">\\n\\n <div class=\\\"col-sm-2\\\">\\n <h6>Mini</h6>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-xs btn-toggle\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"false\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-xs btn-toggle active\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"true\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n </div>\\n\\n</div> \\n\\n\\n\\n<!-- Secondary Color -->\\n\\n<div class=\\\"container example\\\">\\n\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <h3>Secondary Color <small>(Brand Secondary)</small></h3>\\n </div>\\n </div>\\n \\n <div class=\\\"row\\\">\\n\\n <div class=\\\"col-sm-2\\\">\\n <h6>Large</h6>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-lg btn-secondary btn-toggle\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"false\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-lg btn-secondary btn-toggle active\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"true\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n </div>\\n \\n <div class=\\\"row\\\">\\n\\n <div class=\\\"col-sm-2\\\">\\n <h6>Default</h6>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-toggle\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"false\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-toggle active\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"true\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n </div>\\n\\n <div class=\\\"row\\\">\\n\\n <div class=\\\"col-sm-2\\\">\\n <h6>Small</h6>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-secondary btn-toggle\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"false\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-secondary btn-toggle active\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"true\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n </div>\\n\\n <div class=\\\"row\\\">\\n\\n <div class=\\\"col-sm-2\\\">\\n <h6>Mini</h6>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-xs btn-toggle\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"false\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n <div class=\\\"col-sm-5\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-xs btn-secondary btn-toggle active\\\" data-toggle=\\\"button\\\" aria-pressed=\\\"true\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"handle\\\"></div>\\n </button>\\n </div>\\n\\n </div>\\n\\n\\n</div><!-- /.container -->\",\"css\":\"// Colors\\n@brand-primary: #29b5a8;\\n@brand-secondary: #ff8300;\\n@gray: #6b7381;\\n@gray-light: lighten(@gray, 15%);\\n@gray-lighter: lighten(@gray, 30%);;\\n\\n// Button Colors\\n@btn-default-color: @gray;\\n@btn-default-bg: @gray-lighter;\\n\\n// Toggle Sizes\\n@toggle-default-size: 1.5rem;\\n@toggle-default-label-width: 4rem;\\n@toggle-default-font-size: .75rem;\\n\\n\\n// General Styles for Demo\\nbody {\\n\\tfont-family: 'Montserrat', 'Lato', 'Open Sans', 'Helvetica Neue', Helvetica, Calibri, Arial, sans-serif;\\n\\tcolor: @gray;\\n\\tbackground: #f2f2f2;\\n}\\n.jumbotron {\\n background: @gray;\\n color: @gray-lighter;\\n h1 {\\n color: #fff;\\n }\\n}\\n.example {\\n margin: 4rem auto;\\n > .row {\\n margin-top: 2rem;\\n height: 5rem;\\n vertical-align: middle;\\n text-align: center;\\n border: 1px solid fade(@gray-lighter,50%);\\n &:first-of-type {\\n border:none;\\n height: auto;\\n text-align: left;\\n }\\n }\\n h3 {\\n font-weight: 400;\\n > small {\\n font-weight: 200;\\n font-size: .75em;\\n color: @gray-light;\\n }\\n }\\n h6 {\\n font-weight: 700;\\n font-size: .65rem;\\n letter-spacing: 3.32px;\\n text-transform: uppercase;\\n color: @gray-lighter;\\n margin: 0;\\n line-height:5rem;\\n }\\n .btn-toggle {\\n top: 50%;\\n transform: translateY(-50%);\\n }\\n}\\n\\n\\n\\n// Mixin for Switch Colors\\n// Variables: @color, @bg, @active-bg\\n.toggle-color(@color: @btn-default-color; @bg: @btn-default-bg; @active-bg: @brand-primary;) {\\n color: @color;\\n background: @bg;\\n &:before,\\n &:after {\\n color: @color;\\n }\\n &.active {\\n background-color: @active-bg;\\n }\\n}\\n\\n// Mixin for Default Switch Styles\\n// Variables: @size, @margin, @color, @bg, @active-bg, @font-size\\n.toggle-mixin(@size: @toggle-default-size; @margin: @toggle-default-label-width; @font-size: @toggle-default-font-size;) {\\n // color: @color;\\n // background: @bg;\\n margin: 0 @margin;\\n padding: 0;\\n position: relative;\\n border: none;\\n height: @size;\\n width: @size * 2;\\n border-radius: @size;\\n \\n &:focus,\\n &.focus {\\n &,\\n &.active {\\n outline: none;\\n }\\n }\\n \\n &:before,\\n &:after {\\n line-height: @size;\\n width: @margin;\\n text-align: center;\\n font-weight: 600;\\n // color: @color;\\n font-size: @font-size;\\n text-transform: uppercase;\\n letter-spacing: 2px;\\n position: absolute;\\n bottom: 0;\\n transition: opacity .25s;\\n }\\n &:before {\\n content: 'Off';\\n left: -@margin;\\n }\\n &:after {\\n content: 'On';\\n right: -@margin;\\n opacity: .5;\\n }\\n \\n > .handle {\\n position: absolute;\\n top: (@size * .25) / 2;\\n left: (@size * .25) / 2;\\n width: @size * .75;\\n height: @size * .75;\\n border-radius: @size * .75;\\n background: #fff;\\n transition: left .25s;\\n }\\n &.active {\\n transition: background-color .25s;\\n > .handle {\\n left: @size + ((@size * .25) / 2);\\n transition: left .25s;\\n }\\n &:before {\\n opacity: .5;\\n }\\n &:after {\\n opacity: 1;\\n }\\n }\\n \\n &.btn-sm {\\n &:before,\\n &:after {\\n line-height: @size - 2px;\\n color: #fff;\\n letter-spacing: .75px;\\n left: @size * .275;\\n width: @size * 1.55;\\n }\\n &:before {\\n text-align: right;\\n }\\n &:after {\\n text-align: left;\\n opacity: 0;\\n }\\n &.active {\\n &:before {\\n opacity: 0;\\n }\\n &:after {\\n opacity: 1;\\n }\\n }\\n }\\n \\n &.btn-xs {\\n &:before,\\n &:after {\\n display: none;\\n }\\n }\\n}\\n\\n\\n\\n// Apply Mixin to different sizes & colors\\n.btn-toggle {\\n \\n .toggle-mixin;\\n .toggle-color;\\n \\n &.btn-lg {\\n .toggle-mixin(@size: 2.5rem; @font-size: 1rem; @margin: 5rem;);\\n }\\n \\n &.btn-sm {\\n .toggle-mixin(@font-size: .55rem; @margin: .5rem;);\\n }\\n \\n &.btn-xs {\\n .toggle-mixin(@size:1rem;@margin:0;)\\n }\\n \\n &.btn-secondary {\\n .toggle-color(@active-bg:@brand-secondary);\\n }\\n}\\n\",\"js\":\"\",\"html_pre_processor\":\"none\",\"css_pre_processor\":\"less\",\"js_pre_processor\":\"none\",\"html_classes\":\"\",\"css_starter\":\"reset\",\"js_library\":null,\"created_at\":\"2017-02-16T20:36:30.000Z\",\"updated_at\":\"2017-02-17T00:02:19.000Z\",\"title\":\"Bootstrap Button Toggle (On/Off Switch)\",\"description\":\"Working on a client project that will be using Bootstrap, and needed to build a toggle/switch that came in a couple different sizes. I wasn't seeing that as a built-in option within Bootstrap, and I didn't really like the ones already out there that I found from a quick search (I didn't want to use a plugin, just wanted it to utilize Bootstrap's built-in JS), so I decided to make my own.\\n\\nThis example is just using the default \\\"Quick Add\\\" Bootstrap CSS & JS, no added/custom JS on my part, I've simply utilized Bootstrap's buttons.js Single Toggle method (http://getbootstrap.com/javascript/#buttons) and added some custom styling (LESS).\",\"slug_hash\":\"ZLZjzV\",\"head\":\"\",\"private\":false,\"has_animation\":false,\"team_id\":0,\"css_prefix\":\"neither\",\"template\":false,\"parent_id\":0,\"comments_count\":3,\"custom_screenshot_filename\":null,\"loves_count\":720,\"pick\":false,\"popularity\":37514,\"views_count\":338844,\"pick_visible_at\":null,\"cpid\":\"015a48a3-f8b0-783b-a79b-a6f2c117713f\",\"is_new_editor_pen\":false,\"protected\":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"}