Bootstrap 4 Toggle Switch with Custom Text Labels
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title> Bootstrap Button Toggle (On/Off Switch) Example </title> <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css'> </head> <body> <main> <div class="jumbotron text-center text-primary"> <h1 class="text-primary">On/Off Switch</h1> <p class="lead">Bootstrap Button Toggle</p> </div> <div class="container example"> <div class="row"> <div class="col-sm-2"> <h6>Large</h6> </div> <div class="col-sm-5"> <button type="button" class="btn btn-lg btn-toggle" data-toggle="button" aria-pressed="false" autocomplete="off"> <div class="handle"></div> </button> </div> <div class="col-sm-5"> <button type="button" class="btn btn-lg btn-toggle active" data-toggle="button" aria-pressed="true" autocomplete="off"> <div class="handle"></div> </button> </div> </div> <div class="row"> <div class="col-sm-2"> <h6>Default</h6> </div> <div class="col-sm-5"> <button type="button" class="btn btn-toggle" data-toggle="button" aria-pressed="false" autocomplete="off"> <div class="handle"></div> </button> </div> <div class="col-sm-5"> <button type="button" class="btn btn-toggle active" data-toggle="button" aria-pressed="true" autocomplete="off"> <div class="handle"></div> </button> </div> </div> <div class="row"> <div class="col-sm-2"> <h6>Small</h6> </div> <div class="col-sm-5"> <button type="button" class="btn btn-sm btn-toggle" data-toggle="button" aria-pressed="false" autocomplete="off"> <div class="handle"></div> </button> </div> <div class="col-sm-5"> <button type="button" class="btn btn-sm btn-toggle active" data-toggle="button" aria-pressed="true" autocomplete="off"> <div class="handle"></div> </button> </div> </div> <div class="row"> <div class="col-sm-2"> <h6>Mini</h6> </div> <div class="col-sm-5"> <button type="button" class="btn btn-xs btn-toggle" data-toggle="button" aria-pressed="false" autocomplete="off"> <div class="handle"></div> </button> </div> <div class="col-sm-5"> <button type="button" class="btn btn-xs btn-toggle active" data-toggle="button" aria-pressed="true" autocomplete="off"> <div class="handle"></div> </button> </div> </div> </div> <!-- Secondary Color --> <div class="container example"> <div class="row"> <div class="col-sm-12"> <h3>Secondary Color <small>(Brand Secondary)</small></h3> </div> </div> <div class="row"> <div class="col-sm-2"> <h6>Large</h6> </div> <div class="col-sm-5"> <button type="button" class="btn btn-lg btn-secondary btn-toggle" data-toggle="button" aria-pressed="false" autocomplete="off"> <div class="handle"></div> </button> </div> <div class="col-sm-5"> <button type="button" class="btn btn-lg btn-secondary btn-toggle active" data-toggle="button" aria-pressed="true" autocomplete="off"> <div class="handle"></div> </button> </div> </div> <div class="row"> <div class="col-sm-2"> <h6>Default</h6> </div> <div class="col-sm-5"> <button type="button" class="btn btn-secondary btn-toggle" data-toggle="button" aria-pressed="false" autocomplete="off"> <div class="handle"></div> </button> </div> <div class="col-sm-5"> <button type="button" class="btn btn-secondary btn-toggle active" data-toggle="button" aria-pressed="true" autocomplete="off"> <div class="handle"></div> </button> </div> </div> <div class="row"> <div class="col-sm-2"> <h6>Small</h6> </div> <div class="col-sm-5"> <button type="button" class="btn btn-sm btn-secondary btn-toggle" data-toggle="button" aria-pressed="false" autocomplete="off"> <div class="handle"></div> </button> </div> <div class="col-sm-5"> <button type="button" class="btn btn-sm btn-secondary btn-toggle active" data-toggle="button" aria-pressed="true" autocomplete="off"> <div class="handle"></div> </button> </div> </div> <div class="row"> <div class="col-sm-2"> <h6>Mini</h6> </div> <div class="col-sm-5"> <button type="button" class="btn btn-xs btn-toggle" data-toggle="button" aria-pressed="false" autocomplete="off"> <div class="handle"></div> </button> </div> <div class="col-sm-5"> <button type="button" class="btn btn-xs btn-secondary btn-toggle active" data-toggle="button" aria-pressed="true" autocomplete="off"> <div class="handle"></div> </button> </div> </div> </div><!-- /.container --> <!-- END EDMO HTML (Happy Coding!)--> </main> <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/js/bootstrap.min.js'></script> </body> </html>
body { font-family: 'Montserrat', 'Lato', 'Open Sans', 'Helvetica Neue', Helvetica, Calibri, Arial, sans-serif; color: #6b7381; background: #f2f2f2; } .jumbotron { background: #6b7381; color: #bdc1c8; } .jumbotron h1 { color: #fff; } .example { margin: 4rem auto; } .example > .row { margin-top: 2rem; height: 5rem; vertical-align: middle; text-align: center; border: 1px solid rgba(189, 193, 200, 0.5); } .example > .row:first-of-type { border: none; height: auto; text-align: left; } .example h3 { font-weight: 400; } .example h3 > small { font-weight: 200; font-size: 0.75em; color: #939aa5; } .example h6 { font-weight: 700; font-size: 0.65rem; letter-spacing: 3.32px; text-transform: uppercase; color: #bdc1c8; margin: 0; line-height: 5rem; } .example .btn-toggle { top: 50%; transform: translateY(-50%); } .btn-toggle { margin: 0 4rem; padding: 0; position: relative; border: none; height: 1.5rem; width: 3rem; border-radius: 1.5rem; color: #6b7381; background: #bdc1c8; } .btn-toggle:focus, .btn-toggle.focus, .btn-toggle:focus.active, .btn-toggle.focus.active { outline: none; } .btn-toggle:before, .btn-toggle:after { line-height: 1.5rem; width: 4rem; text-align: center; font-weight: 600; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 2px; position: absolute; bottom: 0; transition: opacity 0.25s; } .btn-toggle:before { content: 'Off'; left: -4rem; } .btn-toggle:after { content: 'On'; right: -4rem; opacity: 0.5; } .btn-toggle > .handle { position: absolute; top: 0.1875rem; left: 0.1875rem; width: 1.125rem; height: 1.125rem; border-radius: 1.125rem; background: #fff; transition: left 0.25s; } .btn-toggle.active { transition: background-color 0.25s; } .btn-toggle.active > .handle { left: 1.6875rem; transition: left 0.25s; } .btn-toggle.active:before { opacity: 0.5; } .btn-toggle.active:after { opacity: 1; } .btn-toggle.btn-sm:before, .btn-toggle.btn-sm:after { line-height: -0.5rem; color: #fff; letter-spacing: 0.75px; left: 0.4125rem; width: 2.325rem; } .btn-toggle.btn-sm:before { text-align: right; } .btn-toggle.btn-sm:after { text-align: left; opacity: 0; } .btn-toggle.btn-sm.active:before { opacity: 0; } .btn-toggle.btn-sm.active:after { opacity: 1; } .btn-toggle.btn-xs:before, .btn-toggle.btn-xs:after { display: none; } .btn-toggle:before, .btn-toggle:after { color: #6b7381; } .btn-toggle.active { background-color: #29b5a8; } .btn-toggle.btn-lg { margin: 0 5rem; padding: 0; position: relative; border: none; height: 2.5rem; width: 5rem; border-radius: 2.5rem; } .btn-toggle.btn-lg:focus, .btn-toggle.btn-lg.focus, .btn-toggle.btn-lg:focus.active, .btn-toggle.btn-lg.focus.active { outline: none; } .btn-toggle.btn-lg:before, .btn-toggle.btn-lg:after { line-height: 2.5rem; width: 5rem; text-align: center; font-weight: 600; font-size: 1rem; text-transform: uppercase; letter-spacing: 2px; position: absolute; bottom: 0; transition: opacity 0.25s; } .btn-toggle.btn-lg:before { content: 'Off'; left: -5rem; } .btn-toggle.btn-lg:after { content: 'On'; right: -5rem; opacity: 0.5; } .btn-toggle.btn-lg > .handle { position: absolute; top: 0.3125rem; left: 0.3125rem; width: 1.875rem; height: 1.875rem; border-radius: 1.875rem; background: #fff; transition: left 0.25s; } .btn-toggle.btn-lg.active { transition: background-color 0.25s; } .btn-toggle.btn-lg.active > .handle { left: 2.8125rem; transition: left 0.25s; } .btn-toggle.btn-lg.active:before { opacity: 0.5; } .btn-toggle.btn-lg.active:after { opacity: 1; } .btn-toggle.btn-lg.btn-sm:before, .btn-toggle.btn-lg.btn-sm:after { line-height: 0.5rem; color: #fff; letter-spacing: 0.75px; left: 0.6875rem; width: 3.875rem; } .btn-toggle.btn-lg.btn-sm:before { text-align: right; } .btn-toggle.btn-lg.btn-sm:after { text-align: left; opacity: 0; } .btn-toggle.btn-lg.btn-sm.active:before { opacity: 0; } .btn-toggle.btn-lg.btn-sm.active:after { opacity: 1; } .btn-toggle.btn-lg.btn-xs:before, .btn-toggle.btn-lg.btn-xs:after { display: none; } .btn-toggle.btn-sm { margin: 0 0.5rem; padding: 0; position: relative; border: none; height: 1.5rem; width: 3rem; border-radius: 1.5rem; } .btn-toggle.btn-sm:focus, .btn-toggle.btn-sm.focus, .btn-toggle.btn-sm:focus.active, .btn-toggle.btn-sm.focus.active { outline: none; } .btn-toggle.btn-sm:before, .btn-toggle.btn-sm:after { line-height: 1.5rem; width: 0.5rem; text-align: center; font-weight: 600; font-size: 0.55rem; text-transform: uppercase; letter-spacing: 2px; position: absolute; bottom: 0; transition: opacity 0.25s; } .btn-toggle.btn-sm:before { content: 'Off'; left: -0.5rem; } .btn-toggle.btn-sm:after { content: 'On'; right: -0.5rem; opacity: 0.5; } .btn-toggle.btn-sm > .handle { position: absolute; top: 0.1875rem; left: 0.1875rem; width: 1.125rem; height: 1.125rem; border-radius: 1.125rem; background: #fff; transition: left 0.25s; } .btn-toggle.btn-sm.active { transition: background-color 0.25s; } .btn-toggle.btn-sm.active > .handle { left: 1.6875rem; transition: left 0.25s; } .btn-toggle.btn-sm.active:before { opacity: 0.5; } .btn-toggle.btn-sm.active:after { opacity: 1; } .btn-toggle.btn-sm.btn-sm:before, .btn-toggle.btn-sm.btn-sm:after { line-height: -0.5rem; color: #fff; letter-spacing: 0.75px; left: 0.4125rem; width: 2.325rem; } .btn-toggle.btn-sm.btn-sm:before { text-align: right; } .btn-toggle.btn-sm.btn-sm:after { text-align: left; opacity: 0; } .btn-toggle.btn-sm.btn-sm.active:before { opacity: 0; } .btn-toggle.btn-sm.btn-sm.active:after { opacity: 1; } .btn-toggle.btn-sm.btn-xs:before, .btn-toggle.btn-sm.btn-xs:after { display: none; } .btn-toggle.btn-xs { margin: 0 0; padding: 0; position: relative; border: none; height: 1rem; width: 2rem; border-radius: 1rem; } .btn-toggle.btn-xs:focus, .btn-toggle.btn-xs.focus, .btn-toggle.btn-xs:focus.active, .btn-toggle.btn-xs.focus.active { outline: none; } .btn-toggle.btn-xs:before, .btn-toggle.btn-xs:after { line-height: 1rem; width: 0; text-align: center; font-weight: 600; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 2px; position: absolute; bottom: 0; transition: opacity 0.25s; } .btn-toggle.btn-xs:before { content: 'Off'; left: 0; } .btn-toggle.btn-xs:after { content: 'On'; right: 0; opacity: 0.5; } .btn-toggle.btn-xs > .handle { position: absolute; top: 0.125rem; left: 0.125rem; width: 0.75rem; height: 0.75rem; border-radius: 0.75rem; background: #fff; transition: left 0.25s; } .btn-toggle.btn-xs.active { transition: background-color 0.25s; } .btn-toggle.btn-xs.active > .handle { left: 1.125rem; transition: left 0.25s; } .btn-toggle.btn-xs.active:before { opacity: 0.5; } .btn-toggle.btn-xs.active:after { opacity: 1; } .btn-toggle.btn-xs.btn-sm:before, .btn-toggle.btn-xs.btn-sm:after { line-height: -1rem; color: #fff; letter-spacing: 0.75px; left: 0.275rem; width: 1.55rem; } .btn-toggle.btn-xs.btn-sm:before { text-align: right; } .btn-toggle.btn-xs.btn-sm:after { text-align: left; opacity: 0; } .btn-toggle.btn-xs.btn-sm.active:before { opacity: 0; } .btn-toggle.btn-xs.btn-sm.active:after { opacity: 1; } .btn-toggle.btn-xs.btn-xs:before, .btn-toggle.btn-xs.btn-xs:after { display: none; } .btn-toggle.btn-secondary { color: #6b7381; background: #bdc1c8; } .btn-toggle.btn-secondary:before, .btn-toggle.btn-secondary:after { color: #6b7381; } .btn-toggle.btn-secondary.active { background-color: #ff8300; }
//Doesn't require any JS.
This Bootstrap 4 snippet provides a customizable toggle switch component with custom text labels for each state. It offers a visually appealing and interactive way to allow users to toggle between different options or settings. The toggle switch is designed to be responsive and adaptable to various screen sizes, ensuring a consistent user experience across different devices.
Key Features:
- Customizable Text Labels: Easily modify the text labels displayed for each state of the toggle switch to match your specific requirements.
- Responsive Design: The toggle switch adapts to different screen sizes, ensuring a consistent appearance and functionality on various devices.
- Visually Appealing: The toggle switch incorporates a modern and visually appealing design, enhancing the overall user experience.
- Easy to Use: The toggle switch is intuitive and straightforward for users to interact with, making it a convenient way to present options.
- Lightweight and Efficient: The code is optimized for performance, ensuring a fast and efficient user experience.
Implementation:
- Include Bootstrap 4: Ensure you have Bootstrap 4 installed and configured in your project.
- Create the HTML Structure: Set up the basic HTML structure for the toggle switch, including the container, toggle input, and custom labels.
- Apply Bootstrap Classes: Use Bootstrap's CSS classes to style the toggle switch and its elements, such as form-check, form-check-input, form-check-label, and custom-control-label.
- Customize as Needed: Modify the Bootstrap classes and HTML structure to customize the appearance and behavior of the toggle switch according to your specific requirements.

Join Our Community Call-to-Action Banner Section With Tailwind CSS

Bootstrap 5 Responsive Service Pricing Table Block

Owl Carousel Responsive CSS-Only Team Section Showcase

Tailwind CSS Subscribe Container with Integrated Footer

Responsive Bootstrap 5 Detailed Features Section

Responsive CSS-Only Glassmorphism Login Form with background image

Responsive Tailwind CSS Hero Section and Adaptive Navbar

Responsive Bootstrap 5 Compact FAQ Accordion Display

Responsive CSS Only Services Section with Hover Effects

Responsive Tailwind CSS Team Members Display Showcase

Responsive Bootstrap 5 Clear Process Flow Component

Responsive Interactive Login & Register Form with CSS & JS Transitions
Building Blocks for Your Web Pages
Explore a collection of pre-written HTML,CSS and Javascript
snippets to jumpstart your web development projects.