CSS iOS开关按钮及深色模式

CSS iOS开关按钮及深色模式,点击查看效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS iOS开关按钮及深色模式</title>
    <style>
        :root {
            --button-width: 500px;
            --button-height: 295px;
            --switch-diameter: 255px;
            --button-switch-offset: calc((var(--button-height) - var(--switch-diameter)) / 2);
            --switch-shadow-offset: 10px;
            --switch-wider: 333px;
            --color-grey: #E9E9E9;
            --color-dark-grey: #39393D;
            --color-green: #30D158;
        }
        span {
            display: inline-block;
            width: var(--button-width);
            height: var(--button-height);
            background-color: var(--color-grey);
            border-radius: calc(var(--button-height) / 2);
            position: relative;
            transition: .3s all ease-in-out;
        }
        span::after {
            content: '';
            display: inline-block;
            width: var(--switch-diameter);
            height: var(--switch-diameter);
            background-color: #fff;
            border-radius: calc(var(--switch-diameter) / 2);
            position: absolute;
            top: var(--button-switch-offset);
            transform: translateX(var(--button-switch-offset));
            box-shadow: var(--switch-shadow-offset) 0 calc(var(--switch-shadow-offset) * 4) rgba(0, 0, 0, .10);
            transition: .3s all ease-in-out;
        }
        body {
            min-height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        input[type="checkbox"]:checked + span {
            background-color: var(--color-green);
        }
        input[type="checkbox"]:checked + span::after {
            transform: translateX(calc(var(--button-width) - var(--switch-diameter) - var(--button-switch-offset)));
            box-shadow: calc(var(--switch-shadow-offset) * -1) 0 calc(var(--switch-shadow-offset) * 4) rgba(0, 0, 0, .10);
        }
        input[type="checkbox"] {
            display: none;
        }
        input[type="checkbox"]:active + span::after {
            width: var(--switch-wider);
        }
        input[type="checkbox"]:checked:active + span::after {
            transform: translateX(calc(var(--button-width) - var(--switch-wider) - var(--button-switch-offset)));
        }
        /* 判断当前的系统是否启用了深色模式 */
        @media(prefers-color-scheme: dark) {
            body {
                background-color: #1C1C1E;
            }
            span {
                background-color: var(--color-dark-grey);
            }
        }
    </style>
</head>
<body>
    <label for="switch">
        <input type="checkbox" id="switch">
        <span></span>
    </label>
</body>
</html>
赞(0) 打赏

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫