11
2025
04
00:41:51

HTML + CSS 实现一个酷炫的夜间模式切换动画

实现原理

背景切换:一个白天的背景,再加一个黑夜的背景。黑色背景的堆叠顺序高于白色背景。当场景由白天转为黑夜时,黑色背景由透明逐渐转换为不透明,形成昼夜更替的效果。

日月变换:“太阳”和“月亮”其实是同一个元素,昼夜更替时将它所处的 div 盒子使用 transform 旋转 360°,看上去就是太阳落下然后月亮升起来了……

* 该动效的实现方式及配色来自 codepen 上的一个示例,我将其进行了修改和精简。

动画演示

HTML + CSS 实现一个酷炫的夜间模式切换动画

昼夜切换动画

代码示例

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">

    <meta name="author" content="mengkun">

 

    <title>昼夜切换动画</title>

    <style>

    html, body {

        margin: 0;

        padding: 0;

        width: 100%;

        height: 100%;

    }

 

    /* 白天和黑夜的背景 */

    .mk-dark-mode-sky, 

    .mk-dark-mode-sky:before {

        content: "";

        position: fixed;

        left: 0;

        right: 0;

        top: 0;

        bottom: 0;

        z-index: 999999999;

        transition: 2s ease all;

    }

    .mk-dark-mode-sky {

        background: linear-gradient(#feb8b0, #fef9db);

    }

    .mk-dark-mode-sky:before {

        opacity: 0;

        background: linear-gradient(#4c3f6d, #6c62bb, #93b1ed);

    }

    .mk-dark-mode .mk-dark-mode-sky:before {

        opacity: 1;

    }

 

    /* 太阳和月亮 */

    .mk-dark-mode-planet {

        z-index: 1999999999;

        position: fixed;

        left: -50%;

        top: -50%;

        width: 200%;

        height: 200%;

        transform-origin: center bottom;

        transition: 2s cubic-bezier(.7, 0, 0, 1) all;

    }

    .mk-dark-mode-planet:after {

        position: absolute;

        left: 35%;

        top: 40%;

        width: 150px;

        height: 150px;

        border-radius: 50%;

        content: "";

        background: linear-gradient(#fefefe, #fffbe8);

    }

    </style>

    <script src="https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js"></script>

</head>

<body>

    <div class="mk-dark-mode-sky">

        <div class="mk-dark-mode-planet"></div>

    </div>

    <script>

    /* 这里为了方便演示,点击页面中任意位置即可触发切换动画 */

    $("body").click(function() {

        $("body").toggleClass("mk-dark-mode");

        

        var angle = $('.mk-dark-mode-planet').data('angle') + 360 || 360;

        $('.mk-dark-mode-planet').css({'transform': 'rotate(' + angle + 'deg)' });

        $('.mk-dark-mode-planet').data('angle', angle);

    });

    </script>

</body>

</html>


参考资料

[1].Good Morning, Goodnight.Nanou.https://codepen.io/jackiezen/pen/WMavEV

[2].卡通日出日落CSS3动画特效.站长素材.http://demo.sc.chinaz.net/Files/DownLoad/webjs1/202004/jiaoben7518/




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/10367.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: