纯CSS实现动态昼夜切换按钮

纯CSS实现动态昼夜切换按钮_第1张图片

<style>
body {
    background: #d9deea;
    margin: 50px 0 0 50px;
}
div {
    position: relative;
    width: 220px;
    height: 90px;
    background: 
            radial-gradient(circle at 18% 20px, #fff, #fff 6px, transparent 7px, transparent),
            radial-gradient(circle at 35% 45px, #fff, #fff 1px, transparent 2px, transparent),
            radial-gradient(circle at 10% 70px, #fff, #fff 2.5px, transparent 3.5px, transparent),
            radial-gradient(circle at 25% 15px, #fff, #fff 3px, transparent 4px, transparent),
            radial-gradient(circle at 15% 50px, #fff, #fff 1.5px, transparent 2.5px, transparent),
            radial-gradient(circle at 30% 75px, #fff, #fff 5px, transparent 6px, transparent),
            radial-gradient(circle at 5% 30px, #fff, #fff 0.5px, transparent 1.5px, transparent),
            radial-gradient(circle at 25% 60px, #fff, #fff 0.5px, transparent 1.5px, transparent),
            radial-gradient(circle at 7% 35px, #fff, #fff 0.5px, transparent 1.5px, transparent),
            linear-gradient(90deg, #2b303e, #2b303e 50%, #5a81b4 50%, #5a81b4);
    background-repeat: no-repeat;
    background-size: 200% 100%;
    background-position: 100% 0;
    border-radius: 90px;
    box-shadow: 
        0 -3px 4px #999,
        inset 0 3px 5px #333,
        0 4px 4px #ffe,
        inset 0 -3px 5px #ddd;
    cursor: pointer;
    overflow: hidden;
    transition: .5s all;
    &::before,
    &::after {
        content: "";
        position: absolute;
        transition: .5s all;
    }
    &::before {
        width: 75px;
        height: 75px;
        border-radius: 50%;
        background: #e9cb50;
        inset: 7.5px;
        box-shadow: 
            0 0 5px #333,
            inset 2px 2px 3px #f8f4e4,
            inset -2px -2px 3px #665613;
        z-index: 1;
    }
    &::after {
        width: 70px;
        height: 70px;
        inset: 10px;
        border-radius: 50%;
        box-shadow: 
            10px 60px 0 10px #fff,
            65px 60px 0 5px #fff,
            95px 70px 0 10px #fff,
            135px 45px 0 5px #fff,
            170px 35px 0 10px #fff,
            195px -5px 0 10px #fff,
            -10px 0 0 50px rgba(255, 255, 255, .2),
            15px 0 0 50px rgba(255, 255, 255, .15),
            40px 0 0 50px rgba(255, 255, 255, .21),
            10px 40px 0 10px #abc1d9,
            70px 35px 0 10px #abc1d9,
            95px 40px 0 10px #abc1d9,
            135px 20px 0 10px #abc1d9,
            155px 15px 0 10px #abc1d9,
            190px -20px 0 10px #abc1d9;
    }
}
div:hover::before {
    filter: contrast(90%) brightness(110%);
    scale: 1.05;
}
div.active {
    background-position: 0 0;
    
    &::before {
        translate: 130px;
        background: 
            radial-gradient(circle at 50% 20px, #939aa5, #939aa5 6.5px, transparent 7px, transparent),
            radial-gradient(circle at 35% 45px, #939aa5, #939aa5 11.5px, transparent 12px, transparent),
            radial-gradient(circle at 72% 50px, #939aa5, #939aa5 8.5px, transparent 9px, transparent),
            radial-gradient(#cbcdda, #cbcdda);
    }
    &::after {
        transform: translate(130px);
        box-shadow: 
            10px 60px 0 10px transparent,
            65px 60px 0 5px transparent,
            95px 70px 0 10px transparent,
            135px 45px 0 5px transparent,
            170px 35px 0 10px transparent,
            195px -5px 0 10px transparent,
            10px 0 0 50px rgba(255, 255, 255, .2),
            -15px 0 0 50px rgba(255, 255, 255, .15),
            -40px 0 0 50px rgba(255, 255, 255, .21),
            10px 40px 0 10px transparent,
            70px 35px 0 10px transparent,
            95px 40px 0 10px transparent,
            135px 20px 0 10px transparent,
            155px 15px 0 10px transparent,
            190px -20px 0 10px transparent;
    }
}
style>
<div id="g-btn">div>
<script>
const btn = document.querySelector('#g-btn');
btn.addEventListener('click', (e) => {
    btn.setAttribute('class', btn.getAttribute("class") === "active" ? "" : "active");
});
script>

你可能感兴趣的:(前端,css,html,css3)