Blog

Filter

Medicine
Jan 28, 2023 140 Views 0 Comments

Switch button using CSS only

The switch button is a commonly used UI element that allows users to toggle between two states, typically representing an "on" or "off" state. In this example, we create a switch button using CSS by utilizing the checkbox input element and styling it to achieve the desired switch effect.

By toggling the checkbox, users can interact with the switch button and observe the visual changes in its appearance, indicating the current state of the switch.

 

How to create switch button

Create HTML structure for switch button as follows:

<div class="componentsBox">

        <div class="title">
            <h2>Switch button</h2>
        </div>

        <div class="content">
            <label class="switch m5">
                <input type="checkbox">
                <small></small>
            </label>

            <label class="switch m5">
                <input type="checkbox">
                <small></small>
            </label>

            <label class="switch m5">
                <input type="checkbox" checked="">
                <small></small>
            </label>
        </div>


        <div class="content">
            <label class="switchSmall m5">
                <input type="checkbox">
                <small></small>
            </label>

            <label class="switchSmall m5">
                <input type="checkbox">
                <small></small>
            </label>

            <label class="switchSmall m5">
                <input type="checkbox" checked="">
                <small></small>
            </label>
        </div>


        <div class="content">
            <label class="switchSmall2 m5">
                <input type="checkbox">
                <small></small>
            </label>

            <label class="switchSmall2 m5">
                <input type="checkbox">
                <small></small>
            </label>

            <label class="switchSmall2 m5">
                <input type="checkbox" checked="">
                <small></small>
            </label>
        </div>
    </div>

 

The complete CSS styles for switch button:

 

body {
            margin: 0;
		    padding: 0;
		    background: #67b57b;
		    font-family: sans-serif;
		    display: flex;
		    align-items: center;
		    justify-content: center;
		    height: 100vh;
        }

        * {
            box-sizing: border-box;
        }

        .componentsBox {
            padding: 50px;
            text-align: center;
        }

        .title h2 {
            font-size: 30px;
            color: #ffffff;
            font-weight: 700;
            line-height: 1.2em;
            margin: 0 0 35px;
        }

        .componentsBox .content {
            margin-bottom: 20px;
        }

        .m5 {
            margin: 0 5px;
        }

        .switch {
            display: inline-block;
        }

        .switch input {
            display: none;
        }

        .switch small {
            display: inline-block;
            width: 52px;
    		height: 22px;
            background: #455a64;
            border-radius: 30px;
            position: relative;
            cursor: pointer;
        }

        .switch small:after {
            content: "No";
            position: absolute;
            color: #fff;
            font-size: 12px;
            font-weight: 600;
            width: 100%;
            left: 0px;
            text-align: right;
            padding: 0 6px;
            box-sizing: border-box;
            line-height: 22px;
        }

        .switch small:before {
            content: "";
            position: absolute;
            width: 16px;
            height: 16px;
            background: #fff;
            border-radius: 50%;
            top: 3px;
            left: 3px;
            transition: .3s;
            box-shadow: -3px 0 3px rgba(0, 0, 0, 0.1);
        }

        .switch input:checked~small {
            background: #4fc5c5;
            transition: .3s;
        }

        .switch input:checked~small:before {
            transform: translate(29px, 0px);
            transition: .3s;
        }

        .switch input:checked~small:after {
            content: "Yes";
            text-align: left;
        }

        .switchSmall {
            display: inline-block;
        }

        .switchSmall input {
            display: none;
        }

        .switchSmall small {
            display: inline-block;
            width: 40px;
            height: 18px;
            background: #455a64;
            border-radius: 30px;
            position: relative;
            cursor: pointer;
        }

        .switchSmall small:before {
            content: "";
            position: absolute;
            width: 12px;
            height: 12px;
            background: #fff;
            border-radius: 50%;
            top: 3px;
            left: 3px;
            transition: .3s;
            box-shadow: -3px 0 3px rgba(0, 0, 0, 0.1);
        }

        .switchSmall input:checked~small {
            background: #4fc5c5;
            transition: .3s;
        }

        .switchSmall input:checked~small:before {
            transform: translate(21px, 0px);
            transition: .3s;
        }

        .switchSmall2 {
            display: inline-block;
        }

        .switchSmall2 input {
            display: none;
        }

        .switchSmall2 small {
            display: inline-block;
            width: 45px;
            height: 15px;
            background: #455a64;
            border-radius: 30px;
            position: relative;
            cursor: pointer;
        }

        .switchSmall2 small:before {
            content: "";
            position: absolute;
            width: 19px;
            height: 19px;
            background: #fff;
            border-radius: 50%;
            top: -2px;
            left: -1px;
            transition: .3s;
            box-shadow: -3px 0 3px rgba(0, 0, 0, 0.25);
        }

        .switchSmall2 input:checked~small {
            background: #4fc5c5;
            transition: .3s;
        }

        .switchSmall2 input:checked~small:before {
            transform: translate(27px, 0px);
            transition: .3s;
            box-shadow: 3px 0 3px rgba(0, 0, 0, 0.25);
        }

 

Write your Comment

Comment not available