点击查看html编辑器说明文档

CSS 切换开关 switchedit icon

|
|
Fork(复制)
|
|
作者:
穿越者X57

👉 新版编辑器已上线,点击进行体验吧!

BUG反馈
嵌入
设置
下载
HTML
格式化
支持Emmet,输入 p 后按 Tab键试试吧!
<head> ...
展开
</head>
<body>
            
            <input type="checkbox" role="switch" class="neon" />
        
</body>
CSS
格式化
            
            body {
    display: grid;
    place-items: center;
    overflow: hidden;
    margin: 0;
    height: 100vh;
    background-image: linear-gradient(45deg, #223, #112);
    background:
        radial-gradient(at 100% 0, #fff2, #fff0 50%),
        radial-gradient(at 0% 100%, #0002, #0000 50%),
        #545153;
}

@property --x {
    syntax: '<angle>';
    inherits: true;
    initial-value: 1deg;
}

@property --c {
    syntax: '<color>';
    inherits: true;
    initial-value: #0000;
}

.neon {
    --x: 1deg;
    --c: #0000;
    font-size: 3rem;
    appearance: none;
    position: relative;
    aspect-ratio: 2;
    border-radius: 100em;
    background:
        linear-gradient(to bottom right, #0001, #0000),
        #444143;
    width: 3em;
    box-shadow:
        inset 0 0 0.25em -0.25em #0008,
        inset 0.05em 0.05em 0.2em #000811,
        inset -0.05em -0.05em 0.15em 0.05em #ccc1,
        0 0 0 0.11em #545153;
    transition: --x 0.5s, --c 0.35s, box-shadow 0.5s;
    filter: drop-shadow(0 0 0.2em var(--c));

    &::before {
        content: "";
        position: absolute;
        height: 80%;
        aspect-ratio: 1;
        top: 50%;
        left: 25%;
        transform: translate(-50%, -50%);
        background: #545153;
        box-shadow:
            inset -0.05em -0.05em 0.1em #0008,
            inset 0.05em 0.05em 0.1em #ffffff22,
            inset 0.05em 0em 0.1em -0.065em var(--c),
            0.1em 0.1em 0.15em #000c;
        border-radius: 50%;
        transition: left 0.5s, box-shadow 0.15s;
    }

    &::after {
        content: "";
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: calc(100% + 0.25em);
        height: calc(100% + 0.25em);
        border: 0.1em solid #0ff;
        border-radius: 100em;
        -webkit-mask: conic-gradient(from calc(270deg - var(--x)), #000 calc(2 * var(--x)), #0001 0);
        box-shadow: 0 0 0 2em #0000;
        /* hack for safari */
    }

    &:hover {
        --x: 3deg;
        --c: #0ff5;
        box-shadow:
            inset 0 0 0.25em -0.25em #0008,
            inset 0.05em 0.05em 0.2em #000811,
            inset -0.05em -0.05em 0.15em 0.05em #ccc1,
            0 0 0.05em 0.075em #545153;
    }

    &:checked {
        --x: 180deg;
        --c: #0fff;
        box-shadow:
            inset 0 0 0.25em -0.25em #0008,
            inset 0.05em 0.05em 0.2em #000811,
            inset -0.05em -0.05em 0.15em 0.05em #ccc1,
            0 0 0.1em 0.05em #545153;

        &::before {
            left: 75%;
            box-shadow:
                inset -0.05em -0.05em 0.1em #0008,
                inset 0.05em 0.05em 0.1em #ffffff22,
                inset -0.05em 0em 0.1em -0.035em var(--c),
                0.1em 0.1em 0.15em #000c;
        }
    }

    &[disabled] {
        opacity: 0.25;
    }
}

@media print {
    .neon {
        background: none;

        &,
        &::before,
        &::after {
            -webkit-print-color-adjust: exact;
            print-color-adjust: exact;
        }
    }
}

@media (prefers-reduced-motion) {

    .neon,
    .neon::before,
    .neon::after {
        transition: none !important;
        animation: none !important;
    }
}
        
JS
格式化
            
            
        
预览
控制台