Warning: Undefined array key "night" in /www/wwwroot/dhaomu.com/wp-content/themes/b2/header.php on line 18

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

HTML+CSS实现一个酷炫的夜间模式切换动画。在 mkBlog 主题的 2.0 版本中,有了“夜间模式”的功能。然而在进行日与夜之间切换时,总觉得有点突兀。

HTML+CSS实现一个酷炫的夜间模式切换动画。在使用wordpress主题mkBlog主题的 2.0 版本中,有了“夜间模式”的功能。然而在进行日与夜之间切换时,总觉得有点突兀。

于是参考某浏览器的做法,给加了个切换动画具体效果,可以点击本站右下角的设置图标,切换到夜间模式进行体验!

实现原理

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

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

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

动画演示

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

代码示例

  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">
  7. <meta name="author" content="mengkun">
  8. <title>昼夜切换动画</title>
  9. <style>
  10. html, body {
  11. margin: 0;
  12. padding: 0;
  13. width: 100%;
  14. height: 100%;
  15. }
  16. /* 白天和黑夜的背景 */
  17. .mk-dark-mode-sky,
  18. .mk-dark-mode-sky:before {
  19. content: "";
  20. position: fixed;
  21. left: 0;
  22. right: 0;
  23. top: 0;
  24. bottom: 0;
  25. z-index: 999999999;
  26. transition: 2s ease all;
  27. }
  28. .mk-dark-mode-sky {
  29. background: linear-gradient(#feb8b0, #fef9db);
  30. }
  31. .mk-dark-mode-sky:before {
  32. opacity: 0;
  33. background: linear-gradient(#4c3f6d, #6c62bb, #93b1ed);
  34. }
  35. .mk-dark-mode .mk-dark-mode-sky:before {
  36. opacity: 1;
  37. }
  38. /* 太阳和月亮 */
  39. .mk-dark-mode-planet {
  40. z-index: 1999999999;
  41. position: fixed;
  42. left: -50%;
  43. top: -50%;
  44. width: 200%;
  45. height: 200%;
  46. transform-origin: center bottom;
  47. transition: 2s cubic-bezier(.7, 0, 0, 1) all;
  48. }
  49. .mk-dark-mode-planet:after {
  50. position: absolute;
  51. left: 35%;
  52. top: 40%;
  53. width: 150px;
  54. height: 150px;
  55. border-radius: 50%;
  56. content: "";
  57. background: linear-gradient(#fefefe, #fffbe8);
  58. }
  59. </style>
  60. <script src="https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js"></script>
  61. </head>
  62. <body>
  63. <div class="mk-dark-mode-sky">
  64. <div class="mk-dark-mode-planet"></div>
  65. </div>
  66. <script>
  67. /* 这里为了方便演示,点击页面中任意位置即可触发切换动画 */
  68. $("body").click(function() {
  69. $("body").toggleClass("mk-dark-mode");
  70. var angle = $('.mk-dark-mode-planet').data('angle') + 360 || 360;
  71. $('.mk-dark-mode-planet').css({'transform': 'rotate(' + angle + 'deg)' });
  72. $('.mk-dark-mode-planet').data('angle', angle);
  73. });
  74. </script>
  75. </body>
  76. </html>
温馨提示:
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:duhaomu@163.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明
编程技巧

Java技术一行代码实现网页灰度

2021-3-12 0:00:00

编程技巧

织梦搜索结果不支持autoindex的解决办法

2021-4-26 0:00:00

0 条回复 A文章作者 M管理员
欢迎您,新朋友,感谢参与互动!
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
私信列表
搜索