当前位置:   article > 正文

个人收藏的网页特效应用(电脑新建一个文本文档复制粘贴改后缀名为.html就能用)_axk7.me

axk7.me

1、樱花

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title></title>
  6. </head>
  7. <body>
  8. </body>
  9. <script>
  10. var stop, staticx;
  11. //#region
  12. var img = new Image();
  13. img.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUgAAAEwCAYAAADVZeifAAAACXBIWXMAAACYAAAAmAGiyIKYAAAHG2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBSaWdodHM9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9yaWdodHMvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NDFDMjQxQjYyNjIwNjgxMTgwODNEMjE2MDAzOTU1NDQiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDozNDVjOWViOC04NDc4LTFkNDctOGRjMi0yZDkyOGNhYTYxZWQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6YjAzN2ZiMGItNTU5Mi0xYjRkLWJjZGQtOWU4NGExMDJiMGM2IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE4LTA1LTA5VDE0OjQ5OjM3KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOC0wNS0wOVQxNDo1MToyNSswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOC0wNS0wOVQxNDo1MToyNSswODowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjEyMjVlZWE3LTEyY2QtMTY0NC04ZDAzLWFjOTE2ZTAxZDQ1YyIgc3RSZWY6ZG9jdW1lbnRJRD0idXVpZDoxRDIwNUFGNjZCRDlFNTExOUM5REMwMzg2RjlEQjFGNyIvPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDphYmMzNjIzMy1hOWNkLWNiNDQtODViYi0zZTgyMjEwYmIxMjYiIHN0RXZ0OndoZW49IjIwMTgtMDUtMDlUMTQ6NTE6MjUrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE4IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YjAzN2ZiMGItNTU5Mi0xYjRkLWJjZGQtOWU4NGExMDJiMGM2IiBzdEV2dDp3aGVuPSIyMDE4LTA1LTA5VDE0OjUxOjI1KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2Vx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";
  14. //#endregion
  15. function Sakura(x, y, s, r, fn) {
  16. this.x = x;
  17. this.y = y;
  18. this.s = s;
  19. this.r = r;
  20. this.fn = fn;
  21. }
  22. Sakura.prototype.draw = function(cxt) {
  23. cxt.save();
  24. var xc = 40 * this.s / 4;
  25. cxt.translate(this.x, this.y);
  26. cxt.rotate(this.r);
  27. cxt.drawImage(img, 0, 0, 40 * this.s, 40 * this.s)
  28. cxt.restore();
  29. }
  30. Sakura.prototype.update = function() {
  31. this.x = this.fn.x(this.x, this.y);
  32. this.y = this.fn.y(this.y, this.y);
  33. this.r = this.fn.r(this.r);
  34. if(this.x > window.innerWidth ||
  35. this.x < 0 ||
  36. this.y > window.innerHeight ||
  37. this.y < 0
  38. ) {
  39. this.r = getRandom('fnr');
  40. if(Math.random() > 0.4) {
  41. this.x = getRandom('x');
  42. this.y = 0;
  43. this.s = getRandom('s');
  44. this.r = getRandom('r');
  45. } else {
  46. this.x = window.innerWidth;
  47. this.y = getRandom('y');
  48. this.s = getRandom('s');
  49. this.r = getRandom('r');
  50. }
  51. }
  52. }
  53. SakuraList = function() {
  54. this.list = [];
  55. }
  56. SakuraList.prototype.push = function(sakura) {
  57. this.list.push(sakura);
  58. }
  59. SakuraList.prototype.update = function() {
  60. for(var i = 0, len = this.list.length; i < len; i++) {
  61. this.list[i].update();
  62. }
  63. }
  64. SakuraList.prototype.draw = function(cxt) {
  65. for(var i = 0, len = this.list.length; i < len; i++) {
  66. this.list[i].draw(cxt);
  67. }
  68. }
  69. SakuraList.prototype.get = function(i) {
  70. return this.list[i];
  71. }
  72. SakuraList.prototype.size = function() {
  73. return this.list.length;
  74. }
  75. function getRandom(option) {
  76. var ret, random;
  77. switch(option) {
  78. case 'x':
  79. ret = Math.random() * window.innerWidth;
  80. break;
  81. case 'y':
  82. ret = Math.random() * window.innerHeight;
  83. break;
  84. case 's':
  85. ret = Math.random();
  86. break;
  87. case 'r':
  88. ret = Math.random() * 6;
  89. break;
  90. case 'fnx':
  91. random = -0.5 + Math.random() * 1;
  92. ret = function(x, y) {
  93. return x + 0.5 * random - 1.7;
  94. };
  95. break;
  96. case 'fny':
  97. random = 1.5 + Math.random() * 0.7
  98. ret = function(x, y) {
  99. return y + random;
  100. };
  101. break;
  102. case 'fnr':
  103. random = Math.random() * 0.03;
  104. ret = function(r) {
  105. return r + random;
  106. };
  107. break;
  108. }
  109. return ret;
  110. }
  111. function startSakura() {
  112. requestAnimationFrame = window.requestAnimationFrame ||
  113. window.mozRequestAnimationFrame ||
  114. window.webkitRequestAnimationFrame ||
  115. window.msRequestAnimationFrame ||
  116. window.oRequestAnimationFrame;
  117. var canvas = document.createElement('canvas'),
  118. cxt;
  119. staticx = true;
  120. canvas.height = window.innerHeight;
  121. canvas.width = window.innerWidth;
  122. canvas.setAttribute('style', 'position: fixed;left: 0;top: 0;pointer-events: none;');
  123. canvas.setAttribute('id', 'canvas_sakura');
  124. document.getElementsByTagName('body')[0].appendChild(canvas);
  125. cxt = canvas.getContext('2d');
  126. var sakuraList = new SakuraList();
  127. for(var i = 0; i < 50; i++) {
  128. var sakura, randomX, randomY, randomS, randomR, randomFnx, randomFny;
  129. randomX = getRandom('x');
  130. randomY = getRandom('y');
  131. randomR = getRandom('r');
  132. randomS = getRandom('s');
  133. randomFnx = getRandom('fnx');
  134. randomFny = getRandom('fny');
  135. randomFnR = getRandom('fnr');
  136. sakura = new Sakura(randomX, randomY, randomS, randomR, {
  137. x: randomFnx,
  138. y: randomFny,
  139. r: randomFnR
  140. });
  141. sakura.draw(cxt);
  142. sakuraList.push(sakura);
  143. }
  144. stop = requestAnimationFrame(function() {
  145. cxt.clearRect(0, 0, canvas.width, canvas.height);
  146. sakuraList.update();
  147. sakuraList.draw(cxt);
  148. stop = requestAnimationFrame(arguments.callee);
  149. })
  150. }
  151. window.onresize = function() {
  152. var canvasSnow = document.getElementById('canvas_snow');
  153. canvasSnow.width = window.innerWidth;
  154. canvasSnow.height = window.innerHeight;
  155. }
  156. img.onload = function() {
  157. startSakura();
  158. }
  159. function stopp() {
  160. if(staticx) {
  161. var child = document.getElementById("canvas_sakura");
  162. child.parentNode.removeChild(child);
  163. window.cancelAnimationFrame(stop);
  164. staticx = false;
  165. } else {
  166. startSakura();
  167. }
  168. }
  169. </script>
  170. </html>

2、玫瑰花

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>玫瑰花</title>
  8. </head>
  9. <body>
  10. <canvas id='c'></canvas>
  11. <script>
  12. var b = document.body;
  13. var c = document.getElementsByTagName('canvas')[0];
  14. var a = c.getContext('2d');
  15. document.body.clientWidth;
  16. with (m = Math) C = cos, S = sin, P = pow,
  17. R = random; c.width = c.height = f = 600; h = -250; function p(a, b, c) {
  18. if (c > 60) return [S(a * 7) * (13 + 5 / (.2 + P(b * 4, 4))) - S(b) * 50,
  19. b * f + 50, 625 + C(a * 7) * (13 + 5 / (.2 + P(b * 4, 4))) + b * 400, a * 1 - b / 2, a]; A = a * 2 - 1; B = b * 2 - 1;
  20. if (A * A + B * B < 1) {
  21. if (c > 37) {
  22. n = (j = c & 1) ? 6 : 4; o = .5 / (a + .01) + C(b * 125) * 3 - a * 300; w = b * h; return [o * C(n) + w * S(n) + j * 610 - 390,
  23. o * S(n) - w * C(n) + 550 - j * 350, 1180 + C(B + A) * 99 - j * 300, .4 - a * .1 + P(1 - B * B, -h * 6) * .15 - a * b * .4 + C(a + b) / 5 + P(C((o * (a + 1) + (B > 0 ? w : -w)) / 25), 30) * .1 * (1 - B * B), o / 1e3 + .7 - o * w * 3e-6]
  24. } if (c > 32) {
  25. c = c * 1.16 - .15;
  26. o = a * 45 - 20; w = b * b * h; z = o * S(c) + w * C(c) + 620; return [o * C(c) - w * S(c), 28 + C(B * .5) * 99 - b * b * b * 60 - z / 2 - h,
  27. z, (b * b * .3 + P((1 - (A * A)), 7) * .15 + .3) * b, b * .7]
  28. } o = A * (2 - b) * (80 - c * 2); w = 99 - C(A) * 120 - C(b) * (-h - c * 4.9) + C(P(1 - b, 7)) * 50 + c * 2; z = o * S(c) + w * C(c) + 700;
  29. return [o * C(c) - w * S(c), B * 99 - C(P(b, 7)) * 50 - c / 3 - z / 1.35 + 450, z, (1 - b / 1.2) * .9 + a * .1, P((1 - b), 20) / 4 + .05]
  30. }
  31. }
  32. setInterval('for(i=0;i<1e4;i++)if(s=p(R(),R(),i%46/.74)){z=s[2];x=~~(s[0]*f/z-h);y=~~(s[1]*f/z-h);if(!m[q=y*f+x]|m[q]>z)m[q]=z,a.fillStyle="rgb("+~(s[3]*h)+","+~(s[4]*h)+","+~(s[3]*s[3]*-80)+")",a.fillRect(x,y,1,1)}', 0)
  33. </script>
  34. </body>
  35. </html>

3、记账本

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>记账本</title>
  8. <style>
  9. * {
  10. margin: 0;
  11. padding: 0;
  12. list-style: none;
  13. box-sizing: border-box;
  14. }
  15. html {
  16. font-size: 62.5%;
  17. }
  18. body {
  19. background-color: #f1f1f1;
  20. }
  21. .container {
  22. width: 400px;
  23. padding: 50px;
  24. margin: 0 auto;
  25. position: relative;
  26. }
  27. h1 {
  28. text-align: center;
  29. }
  30. .container>p:nth-of-type(2) {
  31. line-height: 4rem;
  32. font-size: 3.2rem;
  33. }
  34. section {
  35. height: 6rem;
  36. padding: 1rem;
  37. background-color: #fff;
  38. margin-top: 2rem;
  39. box-shadow: 1px 1px 3px lightgray;
  40. }
  41. section .item {
  42. width: 50%;
  43. height: 100%;
  44. float: left;
  45. border-right: 1px solid lightgray;
  46. display: flex;
  47. flex-wrap: wrap;
  48. align-content: center;
  49. }
  50. section .zhichu {
  51. border: 0;
  52. }
  53. section .item p {
  54. width: 100%;
  55. text-align: center;
  56. font-size: 1.6rem;
  57. font-weight: 900;
  58. }
  59. h2 {
  60. margin-top: 1.5rem;
  61. line-height: 4rem;
  62. font-size: 1.8rem;
  63. border-bottom: 1px solid lightgray;
  64. }
  65. li {
  66. height: 3rem;
  67. background-color: #fff;
  68. margin: 1rem auto;
  69. font-size: 1.2rem;
  70. position: relative;
  71. }
  72. li span {
  73. float: left;
  74. width: 46%;
  75. height: 3rem;
  76. line-height: 3rem;
  77. }
  78. li .name {
  79. margin-left: 2%;
  80. }
  81. li .money {
  82. text-align: right;
  83. }
  84. li .del {
  85. width: 2rem;
  86. height: 2rem;
  87. line-height: 2rem;
  88. text-align: center;
  89. color: #fff;
  90. background-color: tomato;
  91. font-size: 1.2rem;
  92. position: absolute;
  93. left: -2rem;
  94. top: .5rem;
  95. display: none;
  96. }
  97. li:hover .del {
  98. display: block;
  99. }
  100. .show {
  101. line-height: 3.6rem;
  102. font-size: 1.6rem;
  103. }
  104. input {
  105. display: block;
  106. width: 100%;
  107. height: 3rem;
  108. line-height: 3rem;
  109. font-size: 1.2rem;
  110. text-indent: 2.4rem;
  111. }
  112. #add {
  113. height: 3rem;
  114. line-height: 3rem;
  115. font-size: 1.4rem;
  116. color: #fff;
  117. background-color: plum;
  118. text-align: center;
  119. margin-top: 2rem;
  120. }
  121. #add:hover {
  122. cursor: pointer;
  123. }
  124. .alert {
  125. width: 100%;
  126. font-size: 1.8rem;
  127. color: #fff;
  128. text-align: center;
  129. position: absolute;
  130. top: 0;
  131. left: 0;
  132. transition: all .5s;
  133. overflow: hidden;
  134. line-height: 4rem;
  135. }
  136. #error {
  137. background-color: tomato;
  138. box-shadow: 0 0 5px tomato;
  139. height: 0;
  140. }
  141. #success {
  142. background-color: skyblue;
  143. box-shadow: 0 0 5px skyblue;
  144. height: 0;
  145. }
  146. </style>
  147. </head>
  148. <body>
  149. <div class="container">
  150. <h1>记账本</h1>
  151. <p style="margin-top: 2rem;">您的余额</p>
  152. <p><span id="yue">0</span></p>
  153. <section>
  154. <div class="item shouru">
  155. <p>收入</p>
  156. <p style="color: skyblue"><span id="shouru">0.00</span></p>
  157. </div>
  158. <div class="item zhichu">
  159. <p>支出</p>
  160. <p style="color: tomato"><span id="zhichu">0.00</span></p>
  161. </div>
  162. </section>
  163. <h2>历史记录</h2>
  164. <ul>
  165. <!-- <li>
  166. <span class="name">投资</span>
  167. <span class="money">-1000</span>
  168. <span class="del">x</span>
  169. </li> -->
  170. </ul>
  171. <h2>添加新交易</h2>
  172. <p class="show">交易名称</p>
  173. <input id="name" type="text" placeholder="请输入名称">
  174. <p class="show">金额(支出-负数,收入+整数)</p>
  175. <input id="money" type="text" placeholder="请输入金额">
  176. <div id="add">添加新交易</div>
  177. <p id="error" class="alert">请输入正确的信息!</p>
  178. <p id="success" class="alert">信息添加成功!</p>
  179. </div>
  180. <script>
  181. //关于本地存储的构造函数
  182. /*localStorage.record = [
  183. {
  184. },
  185. {
  186. },
  187. {
  188. }
  189. ]*/
  190. function Record() {
  191. if (!localStorage.record) {
  192. localStorage.record = '[]';
  193. }
  194. }
  195. //获取缓存的记录内容
  196. Record.prototype.getRecords = function () {
  197. return JSON.parse(localStorage.record);
  198. }
  199. //添加新数据
  200. Record.prototype.addData = function (data) {
  201. // 拿到数组 添加数据 更新缓存
  202. var arr = this.getRecords();
  203. arr.push(data);
  204. localStorage.record = JSON.stringify(arr);
  205. }
  206. //清除所有数据
  207. Record.prototype.removeAllData = function () {
  208. localStorage.clear();
  209. }
  210. // 删掉指定数据
  211. Record.prototype.delData = function (index) {
  212. var arr = this.getRecords();
  213. arr.splice(index, 1);
  214. localStorage.record = JSON.stringify(arr);
  215. }
  216. //计算总收入
  217. Record.prototype.shouru = function () {
  218. var total = 0;
  219. var arr = this.getRecords();
  220. arr.forEach(function (data) {
  221. if (data.type === "+") {
  222. total += data.money / 1;
  223. }
  224. })
  225. return total;
  226. }
  227. //计算总支出
  228. Record.prototype.zhichu = function () {
  229. var total = 0;
  230. var arr = this.getRecords();
  231. arr.forEach(function (data) {
  232. if (data.type === "-") {
  233. total += data.money / 1;
  234. }
  235. })
  236. return total;
  237. }
  238. </script>
  239. <script>
  240. //1.根据缓存显示历史记录
  241. //创建record对象
  242. var record = new Record();
  243. //2.获取历史记录,并添加对应的li
  244. if (record.getRecords != []) {
  245. for (let i = 0; i < record.getRecords().length; i++) {
  246. addLi(record.getRecords()[i]);
  247. }
  248. }
  249. setMoney();
  250. var namein = document.querySelector('#name');//姓名框
  251. var moneyin = document.querySelector('#money');//金额框
  252. var add = document.querySelector('#add');//添加交易
  253. //记录每一笔钱
  254. add.addEventListener('click', function () {
  255. //1.判断输入框的内容
  256. if (!isAlert()) {
  257. errorAlert();
  258. return;
  259. }
  260. //2.创建li,填充li,添加li
  261. //把我们输进去的数据存储在一个集合里
  262. var data = {
  263. name: namein.value,
  264. type: moneyin.value.slice(0, 1),
  265. money: moneyin.value.slice(1)
  266. }
  267. addLi(data);
  268. record.addData(data);
  269. setMoney();
  270. namein.value = '';
  271. moneyin.value = '';
  272. successAlert();
  273. });
  274. function addLi(data) {
  275. var ul = document.querySelector('ul');//获取历史记录
  276. var str = `<li style="border-right:4px solid ${data.type === "+" ? "skyblue" : "tomato"}">
  277. <span class="name">${data.name}</span>
  278. <span class="money" style="color:${data.type === "+" ? "skyblue" : "tomato"}">${data.type + data.money}</span>
  279. <span class="del">x</span>
  280. </li>`;
  281. ul.insertAdjacentHTML('beforeend', str);
  282. var li = ul.children[ul.children.length - 1];
  283. li.children[li.children.length - 1].addEventListener('click', function () {
  284. for (let i = 0; i < record.getRecords().length; i++) {
  285. if (li.children[0].innerHTML == record.getRecords()[i].name) {
  286. record.delData(i);
  287. }
  288. }
  289. setMoney();
  290. ul.removeChild(li);
  291. })
  292. }
  293. //输出框内容不合理就提醒用户
  294. //加减开头,要么就是纯整数,小数的话小数点在整数后且最多两位
  295. //如果输入框内容不合理,就弹窗提醒用户
  296. function isAlert() {
  297. var reg = /^[\+\-](\d+|\d+\.\d{1,2})$/;
  298. if (namein.value === "" || reg.test(moneyin.value) === false) {
  299. return false;
  300. }
  301. else {
  302. return true;
  303. }
  304. }
  305. function setMoney() {
  306. var shouru = document.querySelector('#shouru');
  307. var zhichu = document.querySelector('#zhichu');
  308. var yue = document.querySelector('#yue');
  309. shouru.innerHTML = record.shouru();
  310. zhichu.innerHTML = record.zhichu();
  311. yue.innerHTML = record.shouru() - record.zhichu();
  312. }
  313. function huifu() {
  314. var error = document.querySelector('#error');
  315. error.style.height = '0';
  316. }
  317. function errorAlert() {
  318. var error = document.querySelector('#error');
  319. error.style.height = '4rem';
  320. setTimeout(function () {
  321. error.style.height = '0';
  322. }, 800);
  323. }
  324. function successAlert() {
  325. var success = document.querySelector('#success');
  326. success.style.height = '4rem';
  327. setTimeout(function () {
  328. success.style.height = '0';
  329. }, 800);
  330. }
  331. </script>
  332. </body>
  333. </html>

4、柠檬茶

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>薄荷柠檬茶</title>
  8. </head>
  9. <style>
  10. html,
  11. body,
  12. .wrapper {
  13. height: 100%;
  14. }
  15. body {
  16. overflow: hidden;
  17. background: #e2e9ed;
  18. }
  19. .wrapper {
  20. display: grid;
  21. align-items: center;
  22. justify-content: center;
  23. }
  24. .cooltea {
  25. position: relative;
  26. width: 300px;
  27. height: 300px;
  28. border: 20px solid #fff;
  29. border-radius: 50%;
  30. }
  31. .cooltea:before {
  32. position: absolute;
  33. z-index: -2;
  34. width: 0;
  35. height: 0;
  36. content: '';
  37. border-top: 150px solid #cfe7f5;
  38. border-right: 150px solid #e2e9ed;
  39. border-bottom: 150px solid #cfe7f5;
  40. border-left: 150px solid #cfe7f5;
  41. border-radius: 150px;
  42. }
  43. .cooltea:after {
  44. position: absolute;
  45. z-index: -1;
  46. top: 70px;
  47. right: 70px;
  48. bottom: 70px;
  49. left: 70px;
  50. content: '';
  51. border-radius: 50%;
  52. background: #5db8b6;
  53. }
  54. .cooltea .liquid {
  55. position: absolute;
  56. z-index: 3;
  57. top: 20px;
  58. right: 20px;
  59. bottom: 20px;
  60. left: 20px;
  61. transform: translatex(-15px);
  62. -webkit-animation: liquid 1.5s ease-in-out infinite;
  63. animation: liquid 1.5s ease-in-out infinite;
  64. border-radius: 50%;
  65. background: rgba(139, 233, 193, 0.6);
  66. }
  67. .cooltea .straw {
  68. position: absolute;
  69. z-index: 1;
  70. bottom: 70px;
  71. left: 50%;
  72. width: 20px;
  73. height: 0;
  74. transform: translatex(-50%);
  75. border-top: 300px solid #ff7647;
  76. border-right: 5px solid transparent;
  77. border-left: 5px solid transparent;
  78. }
  79. .cooltea .straw:before {
  80. position: absolute;
  81. top: -310px;
  82. right: 0;
  83. left: 0;
  84. height: 20px;
  85. content: '';
  86. transform: scale(1.5);
  87. border-radius: 50%;
  88. background: #cd4727;
  89. }
  90. .cooltea .straw:after {
  91. position: absolute;
  92. top: -10px;
  93. right: 0;
  94. left: 0;
  95. height: 20px;
  96. content: '';
  97. border-radius: 50%;
  98. background: #ff7647;
  99. }
  100. .cooltea .straw-surface {
  101. position: absolute;
  102. z-index: 5;
  103. bottom: 240px;
  104. left: 50%;
  105. width: 25px;
  106. height: 0;
  107. transform: translatex(-50%);
  108. border-top: 100px solid #ff7647;
  109. border-right: 2px solid transparent;
  110. border-left: 2px solid transparent;
  111. }
  112. .cooltea .straw-surface:after {
  113. position: absolute;
  114. top: -10px;
  115. right: 0;
  116. left: 0;
  117. height: 20px;
  118. content: '';
  119. border-radius: 50%;
  120. background: #ff7647;
  121. }
  122. .cooltea .ice-cubes {
  123. transform-origin: 47% 65%;
  124. -webkit-animation: ice-cubes 8s ease-in-out infinite;
  125. animation: ice-cubes 8s ease-in-out infinite;
  126. }
  127. .cooltea .ice-cube {
  128. width: 80px;
  129. height: 80px;
  130. border-radius: 20px;
  131. background: #fff;
  132. }
  133. .cooltea .ice-cube.ice-cube-1 {
  134. transform: translate(100px, 70px) rotate(10deg);
  135. background: #bcdbce;
  136. }
  137. .cooltea .ice-cube.ice-cube-2 {
  138. position: relative;
  139. z-index: 2;
  140. transform: translate(160px, 100px) rotate(30deg);
  141. }
  142. .cooltea .ice-cube.ice-cube-3 {
  143. transform: translate(40px, 0) rotate(-30deg);
  144. }
  145. .cooltea .leaves {
  146. transform-origin: 46% -42%;
  147. -webkit-animation: ice-cubes 12s ease-in-out infinite;
  148. animation: ice-cubes 12s ease-in-out infinite;
  149. }
  150. .cooltea .leave {
  151. width: 100px;
  152. height: 70px;
  153. border-radius: 100px 0;
  154. background: #19ab87;
  155. }
  156. .cooltea .leave:before {
  157. position: absolute;
  158. width: 1px;
  159. height: 115px;
  160. content: '';
  161. transform: rotate(55deg) translate(10px, -53px);
  162. background: #3fc295;
  163. }
  164. .cooltea .leave.leave-1 {
  165. transform: translate(40px, -160px) rotate(-30deg);
  166. }
  167. .cooltea .leave.leave-2 {
  168. transform: translate(160px, -180px) rotate(30deg);
  169. }
  170. .cooltea .leave.leave-3 {
  171. position: relative;
  172. z-index: 4;
  173. transform: translate(70px, -190px) rotate(80deg);
  174. }
  175. .cooltea .lemon-slice {
  176. position: absolute;
  177. z-index: 1;
  178. width: 125px;
  179. height: 65px;
  180. transform: translate(146px, -178px) rotate(45deg);
  181. -webkit-animation: lemon 3s ease-in-out infinite;
  182. animation: lemon 3s ease-in-out infinite;
  183. border: 10px solid #ecf9c0;
  184. border-bottom: 0;
  185. border-radius: 100px 100px 0 0;
  186. background: #cff063;
  187. }
  188. .cooltea .lemon-slice:before,
  189. .cooltea .lemon-slice:after {
  190. position: absolute;
  191. width: 30px;
  192. height: 20px;
  193. content: '';
  194. border-radius: 50px 0;
  195. background: #aad815;
  196. }
  197. .cooltea .lemon-slice:after {
  198. top: 30px;
  199. left: 30px;
  200. transform: rotate(90deg);
  201. }
  202. .cooltea .lemon-slice:before {
  203. top: 30px;
  204. right: 30px;
  205. transform: rotate(-40deg);
  206. }
  207. .cooltea .shadow {
  208. position: absolute;
  209. z-index: -10;
  210. top: 50%;
  211. width: 400px;
  212. height: 340px;
  213. transform: translatey(-50%) rotate(45deg);
  214. transform-origin: 20% 100%;
  215. background: linear-gradient(
  216. to right,
  217. rgba(0, 0, 0, 0.2) -60%,
  218. rgba(0, 0, 0, 0)
  219. );
  220. }
  221. @-webkit-keyframes liquid {
  222. from {
  223. transform: translatex(-15px);
  224. }
  225. 50% {
  226. transform: translatex(15px);
  227. }
  228. to {
  229. transform: translatex(-15px);
  230. }
  231. }
  232. @keyframes liquid {
  233. from {
  234. transform: translatex(-15px);
  235. }
  236. 50% {
  237. transform: translatex(15px);
  238. }
  239. to {
  240. transform: translatex(-15px);
  241. }
  242. }
  243. @-webkit-keyframes ice-cubes {
  244. from {
  245. transform: rotate(0);
  246. }
  247. to {
  248. transform: rotate(360deg);
  249. }
  250. }
  251. @keyframes ice-cubes {
  252. from {
  253. transform: rotate(0);
  254. }
  255. to {
  256. transform: rotate(360deg);
  257. }
  258. }
  259. @-webkit-keyframes lemon {
  260. from {
  261. transform: translate(146px, -178px) rotate(45deg);
  262. }
  263. 50% {
  264. transform: translate(146px, -178px) rotate(60deg);
  265. }
  266. to {
  267. transform: translate(146px, -178px) rotate(45deg);
  268. }
  269. }
  270. @keyframes lemon {
  271. from {
  272. transform: translate(146px, -178px) rotate(45deg);
  273. }
  274. 50% {
  275. transform: translate(146px, -178px) rotate(60deg);
  276. }
  277. to {
  278. transform: translate(146px, -178px) rotate(45deg);
  279. }
  280. }
  281. </style>
  282. <body>
  283. <div class="wrapper">
  284. <div class="cooltea">
  285. <div class="liquid"></div>
  286. <div class="ice-cubes">
  287. <div class="ice-cube ice-cube-1"></div>
  288. <div class="ice-cube ice-cube-2"></div>
  289. <div class="ice-cube ice-cube-3"></div>
  290. </div>
  291. <div class="lemon-slice"></div>
  292. <div class="leaves">
  293. <div class="leave leave-1"></div>
  294. <div class="leave leave-2"></div>
  295. <div class="leave leave-3"></div>
  296. </div>
  297. <div class="straw"></div>
  298. <div class="straw-surface"></div>
  299. <div class="shadow"></div>
  300. </div>
  301. </div>
  302. </body>
  303. </html>

5、罗盘时钟

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <title>时钟</title>
  7. <meta name="viewport" content="width=device-width, initial-scale=1">
  8. <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
  9. <script>
  10. $(document).ready(function () {
  11. var style = document.styleSheets[0];
  12. var monthLeft=$(".main-content .month").css("left");
  13. var dayLeft=$(".main-content .day").css("left");
  14. var weekLeft=$(".main-content .week").css("left");
  15. var shichenLeft=$(".main-content .shichen").css("left");
  16. var hourLeft=$(".main-content .hour").css("left");
  17. var minuteLeft=$(".main-content .minute").css("left");
  18. var secondLeft=$(".main-content .second").css("left");
  19. var top=$(".main-content .month").css("top");
  20. var yearLeft=$(".main-content .year span").width()/2;
  21. var type=1; //类型切换: 0阿拉伯数字 1简体 2繁体 3英文
  22. //当前日期时间
  23. var Time={
  24. currentTime:{
  25. year:1970,
  26. month:1,
  27. day:1,
  28. hour:0,
  29. minute:0,
  30. second:0,
  31. week:0,
  32. shichen:{}
  33. },
  34. months:[],
  35. days:[],
  36. hours:[],
  37. minutes:[],
  38. seconds:[],
  39. shichens:[],
  40. weeks:[],
  41. hours:[],
  42. minutes:[],
  43. seconds:[],
  44. yearUnit:"年",
  45. monthUnit:"月",
  46. dayUnit:"日",
  47. weekUnit:"星期",
  48. hourUnit:"时",
  49. minuteUnit:"分",
  50. secondUnit:"秒"
  51. }
  52. var month=Time.currentTime.month;
  53. var year=Time.currentTime.year;
  54. initTime(Time,type);
  55. $(".main-content .year").append("<span class='current'>"+Time.currentTime.year+Time.yearUnit+"</span>");
  56. var h=$(".year span").height();
  57. top=-(parseInt(top))-parseInt(h)/2;
  58. top+="px";
  59. $(".main-content .month").append("<span class='current'>"+Time.currentTime.month+Time.monthUnit+"</span>");
  60. $(".main-content .day").append("<span class='current'>"+Time.currentTime.day+Time.dayUnit+"</span>");
  61. $(".main-content .week").append("<span class='current'>"+Time.currentTime.week+"</span>");
  62. $(".main-content .shichen").append("<span class='current'>"+Time.currentTime.shichen.str+"</span>");
  63. $(".main-content .hour").append("<span class='current'>"+Time.currentTime.hour+Time.hourUnit+"</span>");
  64. $(".main-content .minute").append("<span class='current'>"+Time.currentTime.minute+Time.minuteUnit+"</span>");
  65. $(".main-content .second").append("<span class='current'>"+Time.currentTime.second+Time.secondUnit+"</span>");
  66. for (const key in Time.months) {
  67. if (Time.months.hasOwnProperty(key)) {
  68. const element = Time.months[key];
  69. if(element!=Time.currentTime.month){
  70. $(".main-content .month").append("<span>"+element+Time.monthUnit+"</span>");
  71. }
  72. }
  73. }
  74. for (const key in Time.days) {
  75. if (Time.days.hasOwnProperty(key)) {
  76. const element = Time.days[key];
  77. if(element!=Time.currentTime.day){
  78. $(".main-content .day").append("<span>"+element+Time.dayUnit+"</span>");
  79. }
  80. }
  81. }
  82. for (const key in Time.weeks) {
  83. if (Time.weeks.hasOwnProperty(key)) {
  84. const element = Time.weeks[key];
  85. if(element!=Time.currentTime.week){
  86. $(".main-content .week").append("<span>"+element+"</span>");
  87. }
  88. }
  89. }
  90. for (const key in Time.shichens) {
  91. if (Time.shichens.hasOwnProperty(key)) {
  92. const element = Time.shichens[key];
  93. if(element!=Time.currentTime.shichen.str){
  94. $(".main-content .shichen").append("<span>"+element+"</span>");
  95. }
  96. }
  97. }
  98. for (const key in Time.hours) {
  99. if (Time.hours.hasOwnProperty(key)) {
  100. const element = Time.hours[key];
  101. if(element!=Time.currentTime.hour){
  102. $(".main-content .hour").append("<span>"+element+Time.hourUnit+"</span>");
  103. }
  104. }
  105. }
  106. for (const key in Time.minutes) {
  107. if (Time.minutes.hasOwnProperty(key)) {
  108. const element = Time.minutes[key];
  109. if(element!=Time.currentTime.minute){
  110. $(".main-content .minute").append("<span>"+element+Time.minuteUnit+"</span>");
  111. }
  112. }
  113. }
  114. for (const key in Time.seconds) {
  115. if (Time.seconds.hasOwnProperty(key)) {
  116. const element = Time.seconds[key];
  117. if(element!=Time.currentTime.second){
  118. $(".main-content .second").append("<span>"+element+Time.secondUnit+"</span>");
  119. }
  120. }
  121. }
  122. setTimeout(function () {
  123. $(".month span").each(function(index,element){
  124. $(element).css("animation","month"+index+" 1s linear");
  125. $(element).css("animation-fill-mode","forwards");
  126. style.insertRule("@keyframes month"+index+"{0%{transform: rotateZ(0);transform-origin: -"+monthLeft+" "+top+";}100%{transform:rotateZ("+-(360/12)*(index)+"deg);transform-origin: -"+monthLeft+" "+top+";}}",style.rules.length);
  127. });
  128. }, 0);
  129. setTimeout(function () {
  130. $(".day span").each(function(index,element){
  131. $(element).css("animation","day"+index+" 1s linear");
  132. $(element).css("animation-fill-mode","forwards");
  133. style.insertRule("@keyframes day"+index+"{0%{transform: rotateZ(0);transform-origin: -"+dayLeft+" "+top+";}100%{transform:rotateZ("+-(360/Time.days.length)*index+"deg);transform-origin: -"+dayLeft+" "+top+";}}",style.rules.length);
  134. });
  135. }, 1000);
  136. setTimeout(function () {
  137. $(".week span").each(function(index,element){
  138. $(element).css("animation","week"+index+" 1s linear");
  139. $(element).css("animation-fill-mode","forwards");
  140. style.insertRule("@keyframes week"+index+"{0%{transform: rotateZ(0);transform-origin: -"+weekLeft+" "+top+";}100%{transform:rotateZ("+-(360/Time.weeks.length)*index+"deg);transform-origin: -"+weekLeft+" "+top+";}}",style.rules.length);
  141. });
  142. }, 2000);
  143. setTimeout(function () {
  144. $(".shichen span").each(function(index,element){
  145. $(element).css("animation","shichen"+index+" 1s linear");
  146. $(element).css("animation-fill-mode","forwards");
  147. style.insertRule("@keyframes shichen"+index+"{0%{transform: rotateZ(0);transform-origin: -"+shichenLeft+" "+top+";}100%{transform:rotateZ("+-(360/Time.shichens.length)*index+"deg);transform-origin: -"+shichenLeft+" "+top+";}}",style.rules.length);
  148. });
  149. }, 3000);
  150. setTimeout(function () {
  151. $(".hour span").each(function(index,element){
  152. $(element).css("animation","hour"+index+" 1s linear");
  153. $(element).css("animation-fill-mode","forwards");
  154. style.insertRule("@keyframes hour"+index+"{0%{transform: rotateZ(0);transform-origin: -"+hourLeft+" "+top+";}100%{transform:rotateZ("+-(360/Time.hours.length)*index+"deg);transform-origin: -"+hourLeft+" "+top+";}}",style.rules.length);
  155. });
  156. }, 4000);
  157. setTimeout(function () {
  158. $(".minute span").each(function(index,element){
  159. $(element).css("animation","minute"+index+" 1s linear");
  160. $(element).css("animation-fill-mode","forwards");
  161. style.insertRule("@keyframes minute"+index+"{0%{transform: rotateZ(0);transform-origin: -"+minuteLeft+" "+top+";}100%{transform:rotateZ("+-(360/Time.minutes.length)*index+"deg);transform-origin: -"+minuteLeft+" "+top+";}}",style.rules.length);
  162. });
  163. }, 5000);
  164. setTimeout(function () {
  165. $(".second span").each(function(index,element){
  166. $(element).css("animation","second"+index+" 1s linear");
  167. $(element).css("animation-fill-mode","forwards");
  168. style.insertRule("@keyframes second"+index+"{0%{transform: rotateZ(0);transform-origin: -"+secondLeft+" "+top+";}100%{transform:rotateZ("+-(360/Time.seconds.length)*index+"deg);transform-origin: -"+secondLeft+" "+top+";}}",style.rules.length);
  169. });
  170. }, 6000);
  171. //旋转
  172. setTimeout(function () {
  173. $(".year span").css("animation","yearRun 1s linear infinite");
  174. style.insertRule("@keyframes yearRun {0%{transform: rotateZ(0);transform-origin: -"+yearLeft+" "+top+";}100%{transform:rotateZ(720deg);transform-origin: -"+yearLeft+" "+top+";}}",style.rules.length);
  175. $($(".main-content .second span")[0]).removeClass("current");
  176. $(".second span").each(function(index,element){
  177. $(element).css("animation","secondRun"+index+" 1s linear infinite");
  178. style.insertRule("@keyframes secondRun"+index+" {0%{transform: rotateZ(0);transform-origin: -"+secondLeft+" "+top+";}100%{transform:rotateZ("+((index+1)*720)+"deg);transform-origin: -"+secondLeft+" "+top+";}}",style.rules.length);
  179. });
  180. $($(".main-content .minute span")[0]).removeClass("current");
  181. $(".minute span").each(function(index,element){
  182. $(element).css("animation","minuteRun"+index+" 1s linear infinite");
  183. style.insertRule("@keyframes minuteRun"+index+" {0%{transform: rotateZ(0);transform-origin: -"+minuteLeft+" "+top+";}100%{transform:rotateZ("+((index+1)*720)+"deg);transform-origin: -"+minuteLeft+" "+top+";}}",style.rules.length);
  184. });
  185. $($(".main-content .hour span")[0]).removeClass("current");
  186. $(".hour span").each(function(index,element){
  187. $(element).css("animation","hourRun"+index+" 1s linear infinite");
  188. style.insertRule("@keyframes hourRun"+index+" {0%{transform: rotateZ(0);transform-origin: -"+hourLeft+" "+top+";}100%{transform:rotateZ("+((index+1)*720)+"deg);transform-origin: -"+hourLeft+" "+top+";}}",style.rules.length);
  189. });
  190. $($(".main-content .shichen span")[0]).removeClass("current");
  191. $(".shichen span").each(function(index,element){
  192. $(element).css("animation","shichenRun"+index+" 1s linear infinite");
  193. style.insertRule("@keyframes shichenRun"+index+" {0%{transform: rotateZ(0);transform-origin: -"+shichenLeft+" "+top+";}100%{transform:rotateZ("+((index+1)*720)+"deg);transform-origin: -"+shichenLeft+" "+top+";}}",style.rules.length);
  194. });
  195. $($(".main-content .week span")[0]).removeClass("current");
  196. $(".week span").each(function(index,element){
  197. $(element).css("animation","weekRun"+index+" 1s linear infinite");
  198. style.insertRule("@keyframes weekRun"+index+" {0%{transform: rotateZ(0);transform-origin: -"+weekLeft+" "+top+";}100%{transform:rotateZ("+((index+1)*720)+"deg);transform-origin: -"+weekLeft+" "+top+";}}",style.rules.length);
  199. });
  200. $($(".main-content .day span")[0]).removeClass("current");
  201. $(".day span").each(function(index,element){
  202. $(element).css("animation","dayRun"+index+" 1s linear infinite");
  203. style.insertRule("@keyframes dayRun"+index+" {0%{transform: rotateZ(0);transform-origin: -"+dayLeft+" "+top+";}100%{transform:rotateZ("+((index+1)*720)+"deg);transform-origin: -"+dayLeft+" "+top+";}}",style.rules.length);
  204. });
  205. $($(".main-content .month span")[0]).removeClass("current");
  206. $(".month span").each(function(index,element){
  207. $(element).css("animation","monthRun"+index+" 1s linear infinite");
  208. style.insertRule("@keyframes monthRun"+index+" {0%{transform: rotateZ(0);transform-origin: -"+monthLeft+" "+top+";}100%{transform:rotateZ("+((index+1)*720)+"deg);transform-origin: -"+monthLeft+" "+top+";}}",style.rules.length);
  209. });
  210. }, 7000);
  211. //初始化当前时间
  212. setTimeout(function () {
  213. var myDate = new Date();
  214. Time.currentTime.year=myDate.getFullYear();
  215. Time.currentTime.month=myDate.getMonth()+1;
  216. Time.currentTime.day=myDate.getDate();
  217. Time.currentTime.week=myDate.getDay();
  218. Time.currentTime.hour=myDate.getHours();
  219. Time.currentTime.minute=myDate.getMinutes();
  220. Time.currentTime.second=myDate.getSeconds();
  221. // Time.currentTime.day=27;
  222. // Time.currentTime.hour=23;
  223. // Time.currentTime.minute=59;
  224. // Time.currentTime.second=57;
  225. // Time.currentTime.day=31;
  226. // Time.currentTime.month=12;
  227. month=Time.currentTime.month;
  228. year=Time.currentTime.year;
  229. initTime(Time,type);
  230. $(".main-content .year").html("");
  231. $(".main-content .year").append("<span class='current'>"+Time.currentTime.year+Time.yearUnit+"</span>");
  232. $(".main-content .second").html("");
  233. $(".main-content .second").append("<span class='current'>"+Time.currentTime.second+Time.secondUnit+"</span>");
  234. for (const key in Time.seconds) {
  235. if (Time.seconds.hasOwnProperty(key)) {
  236. const element = Time.seconds[key];
  237. if(element!=Time.currentTime.second){
  238. $(".main-content .second").append("<span>"+element+Time.secondUnit+"</span>");
  239. }
  240. }
  241. }
  242. $(".main-content .minute").html("");
  243. $(".main-content .minute").append("<span class='current'>"+Time.currentTime.minute+Time.minuteUnit+"</span>");
  244. for (const key in Time.minutes) {
  245. if (Time.minutes.hasOwnProperty(key)) {
  246. const element = Time.minutes[key];
  247. if(element!=Time.currentTime.minute){
  248. $(".main-content .minute").append("<span>"+element+Time.minuteUnit+"</span>");
  249. }
  250. }
  251. }
  252. $(".main-content .hour").html("");
  253. $(".main-content .hour").append("<span class='current'>"+Time.currentTime.hour+Time.hourUnit+"</span>");
  254. for (const key in Time.hours) {
  255. if (Time.hours.hasOwnProperty(key)) {
  256. const element = Time.hours[key];
  257. if(element!=Time.currentTime.hour){
  258. $(".main-content .hour").append("<span>"+element+Time.hourUnit+"</span>");
  259. }
  260. }
  261. }
  262. $(".main-content .shichen").html("");
  263. $(".main-content .shichen").append("<span class='current'>"+Time.currentTime.shichen.str+"</span>");
  264. for (const key in Time.shichens) {
  265. if (Time.shichens.hasOwnProperty(key)) {
  266. const element = Time.shichens[key];
  267. if(element!=Time.currentTime.shichen.str){
  268. $(".main-content .shichen").append("<span>"+element+"</span>");
  269. }
  270. }
  271. }
  272. $(".main-content .week").html("");
  273. $(".main-content .week").append("<span class='current'>"+Time.currentTime.week+"</span>");
  274. for (const key in Time.weeks) {
  275. if (Time.weeks.hasOwnProperty(key)) {
  276. const element = Time.weeks[key];
  277. if(element!=Time.currentTime.week){
  278. $(".main-content .week").append("<span>"+element+"</span>");
  279. }
  280. }
  281. }
  282. $(".main-content .day").html("");
  283. $(".main-content .day").append("<span class='current'>"+Time.currentTime.day+Time.dayUnit+"</span>");
  284. for (const key in Time.days) {
  285. if (Time.days.hasOwnProperty(key)) {
  286. const element = Time.days[key];
  287. if(element!=Time.currentTime.day){
  288. $(".main-content .day").append("<span>"+element+Time.dayUnit+"</span>");
  289. }
  290. }
  291. }
  292. $(".main-content .month").html("");
  293. $(".main-content .month").append("<span class='current'>"+Time.currentTime.month+Time.monthUnit+"</span>");
  294. for (const key in Time.months) {
  295. if (Time.months.hasOwnProperty(key)) {
  296. const element = Time.months[key];
  297. if(element!=Time.currentTime.month){
  298. $(".main-content .month").append("<span>"+element+Time.monthUnit+"</span>");
  299. }
  300. }
  301. }
  302. }, 8000);
  303. //转到当前时间
  304. setTimeout(function () {
  305. $(".second span").each(function(index,element){
  306. $(element).css("animation","second"+index+" 0s linear");
  307. $(element).css("animation-fill-mode","forwards");
  308. style.insertRule("@keyframes second"+index+"{0%{transform: rotateZ(0);transform-origin: -"+secondLeft+" "+top+";}100%{transform:rotateZ("+-(360/Time.seconds.length)*index+"deg);transform-origin: -"+secondLeft+" "+top+";}}",style.rules.length);
  309. });
  310. $(".minute span").each(function(index,element){
  311. $(element).css("animation","minute"+index+" 0s linear");
  312. $(element).css("animation-fill-mode","forwards");
  313. style.insertRule("@keyframes minute"+index+"{0%{transform: rotateZ(0);transform-origin: -"+minuteLeft+" "+top+";}100%{transform:rotateZ("+-(360/Time.minutes.length)*index+"deg);transform-origin: -"+minuteLeft+" "+top+";}}",style.rules.length);
  314. });
  315. $(".hour span").each(function(index,element){
  316. $(element).css("animation","hour"+index+" 0s linear");
  317. $(element).css("animation-fill-mode","forwards");
  318. style.insertRule("@keyframes hour"+index+"{0%{transform: rotateZ(0);transform-origin: -"+hourLeft+" "+top+";}100%{transform:rotateZ("+-(360/Time.hours.length)*index+"deg);transform-origin: -"+hourLeft+" "+top+";}}",style.rules.length);
  319. });
  320. $(".shichen span").each(function(index,element){
  321. $(element).css("animation","shichen"+index+" 0s linear");
  322. $(element).css("animation-fill-mode","forwards");
  323. style.insertRule("@keyframes shichen"+index+"{0%{transform: rotateZ(0);transform-origin: -"+shichenLeft+" "+top+";}100%{transform:rotateZ("+-(360/Time.shichens.length)*index+"deg);transform-origin: -"+shichenLeft+" "+top+";}}",style.rules.length);
  324. });
  325. $(".week span").each(function(index,element){
  326. $(element).css("animation","week"+index+" 0s linear");
  327. $(element).css("animation-fill-mode","forwards");
  328. style.insertRule("@keyframes week"+index+"{0%{transform: rotateZ(0);transform-origin: -"+weekLeft+" "+top+";}100%{transform:rotateZ("+-(360/Time.weeks.length)*index+"deg);transform-origin: -"+weekLeft+" "+top+";}}",style.rules.length);
  329. });
  330. $(".day span").each(function(index,element){
  331. $(element).css("animation","day"+index+" 0s linear");
  332. $(element).css("animation-fill-mode","forwards");
  333. style.insertRule("@keyframes day"+index+"{0%{transform: rotateZ(0);transform-origin: -"+dayLeft+" "+top+";}100%{transform:rotateZ("+-(360/Time.days.length)*index+"deg);transform-origin: -"+dayLeft+" "+top+";}}",style.rules.length);
  334. });
  335. $(".month span").each(function(index,element){
  336. $(element).css("animation","month"+index+" 0s linear");
  337. $(element).css("animation-fill-mode","forwards");
  338. style.insertRule("@keyframes month"+index+"{0%{transform: rotateZ(0);transform-origin: -"+monthLeft+" "+top+";}100%{transform:rotateZ("+-(360/Time.months.length)*index+"deg);transform-origin: -"+monthLeft+" "+top+";}}",style.rules.length);
  339. });
  340. }, 8000);
  341. setTimeout(function (){
  342. setInterval(run,1000)
  343. // run();
  344. },8000)
  345. var seci=1;
  346. var mini=1;
  347. var houri=1;
  348. var shicheni=1;
  349. var weeki=1;
  350. var dayi=1;
  351. var monthi=1;
  352. function run(){
  353. var next=$(".second span.current").next();
  354. if(next.text()==""){
  355. next=$(".second span").first();
  356. }
  357. var secang1=6*(seci-1);
  358. var secang2=6*seci;
  359. $(".second").css("animation","secondRun"+seci+" 0.5s ease-in-out");
  360. $(".second").css("animation-fill-mode","forwards");
  361. //90%{transform: rotateZ("+(secang1)+"deg);transform-origin: -"+secondLeft+" "+top+";}
  362. style.insertRule("@keyframes secondRun"+seci+"{0%{transform: rotateZ("+secang1+"deg);transform-origin: -"+secondLeft+" "+top+";} 50%{transform:rotateZ("+(secang2+1)+"deg);transform-origin: -"+secondLeft+" "+top+";} 100%{transform:rotateZ("+secang2+"deg);transform-origin: -"+secondLeft+" "+top+";}}",style.rules.length);
  363. $(".second span.current").removeClass("current");
  364. next.addClass("current");
  365. seci++;
  366. if(seci>60){
  367. seci=1;
  368. }
  369. //进分钟
  370. var secText=$(".second span.current").text();
  371. if(secText=="0秒"||secText=="零秒"||secText=="0 s"){
  372. var minang1=6*(mini-1);
  373. var minang2=6*mini;
  374. var next=$(".minute span.current").next();
  375. if(next.text()==""){
  376. next=$(".minute span").first();
  377. }
  378. $(".minute").css("animation","minuteRun"+mini+" 0.5s ease-in-out");
  379. $(".minute").css("animation-fill-mode","forwards");
  380. style.insertRule("@keyframes minuteRun"+mini+" {0%{transform: rotateZ("+minang1+"deg);transform-origin: -"+minuteLeft+" "+top+";} 100%{transform:rotateZ("+minang2+"deg);transform-origin: -"+minuteLeft+" "+top+";}}",style.rules.length);
  381. $(".minute span.current").removeClass("current");
  382. next.addClass("current");
  383. mini++;
  384. if(mini>60){
  385. mini=1;
  386. }
  387. }
  388. //进小时
  389. var minText=$(".minute span.current").text();
  390. if((secText=="0秒"||secText=="零秒"||secText=="0 s") &&(minText=="0分"||minText=="零分"||minText=="0 m")){
  391. var hourang1=15*(houri-1);
  392. var hourang2=15*houri;
  393. var next=$(".hour span.current").next();
  394. if(next.text()==""){
  395. next=$(".hour span").first();
  396. }
  397. $(".hour").css("animation","hourRun"+houri+" 0.5s ease-in-out");
  398. $(".hour").css("animation-fill-mode","forwards");
  399. style.insertRule("@keyframes hourRun"+houri+" {0%{transform: rotateZ("+hourang1+"deg);transform-origin: -"+hourLeft+" "+top+";} 100%{transform:rotateZ("+hourang2+"deg);transform-origin: -"+hourLeft+" "+top+";}}",style.rules.length);
  400. $(".hour span.current").removeClass("current");
  401. next.addClass("current");
  402. houri++;
  403. if(houri>24){
  404. houri=1;
  405. }
  406. }
  407. //进时辰
  408. var hourText=$(".hour span.current").text();
  409. if((secText=="0秒"||secText=="零秒"||secText=="0 s") && (minText=="0分"||minText=="零分"||minText=="0 m")&&isShichen(hourText)){
  410. var shichenang1=30*(shicheni-1);
  411. var shichenang2=30*shicheni;
  412. var next=$(".shichen span.current").next();
  413. if(next.text()==""){
  414. next=$(".shichen span").first();
  415. }
  416. $(".shichen").css("animation","shichenRun"+shicheni+" 0.5s ease-in-out");
  417. $(".shichen").css("animation-fill-mode","forwards");
  418. style.insertRule("@keyframes shichenRun"+shicheni+" {0%{transform: rotateZ("+shichenang1+"deg);transform-origin: -"+shichenLeft+" "+top+";} 100%{transform:rotateZ("+shichenang2+"deg);transform-origin: -"+shichenLeft+" "+top+";}}",style.rules.length);
  419. $(".shichen span.current").removeClass("current");
  420. next.addClass("current");
  421. shicheni++;
  422. if(shicheni>30){
  423. shicheni=1;
  424. }
  425. }
  426. //进星期和日
  427. if((secText=="0秒"||secText=="零秒"||secText=="0 s") && (minText=="0分"||minText=="零分"||minText=="0 m")&&(hourText=="0时"||hourText=="零时"||hourText=="0 h")){
  428. var weekang1=(360/7)*(weeki-1);
  429. var weekang2=(360/7)*weeki;
  430. var dayang1=(360/Time.days.length)*(dayi-1);
  431. var dayang2=(360/Time.days.length)*dayi;
  432. console.log(dayang1);
  433. var nextweek=$(".week span.current").next();
  434. var nextday=$(".day span.current").next();
  435. if(nextweek.text()==""){
  436. nextweek=$(".week span").first();
  437. }
  438. if(nextday.text()==""){
  439. nextday=$(".day span").first();
  440. }
  441. $(".week").css("animation","weekRun"+weeki+" 0.5s ease-in-out");
  442. $(".week").css("animation-fill-mode","forwards");
  443. style.insertRule("@keyframes weekRun"+weeki+" {0%{transform: rotateZ("+weekang1+"deg);transform-origin: -"+weekLeft+" "+top+";} 100%{transform:rotateZ("+weekang2+"deg);transform-origin: -"+weekLeft+" "+top+";}}",style.rules.length);
  444. $(".day").css("animation","dayRun"+dayi+" 0.5s ease-in-out");
  445. $(".day").css("animation-fill-mode","forwards");
  446. style.insertRule("@keyframes dayRun"+dayi+" {0%{transform: rotateZ("+dayang1+"deg);transform-origin: -"+dayLeft+" "+top+";} 100%{transform:rotateZ("+dayang2+"deg);transform-origin: -"+dayLeft+" "+top+";}}",style.rules.length);
  447. $(".week span.current").removeClass("current");
  448. nextweek.addClass("current");
  449. weeki++;
  450. if(weeki>7){
  451. weeki=1;
  452. }
  453. $(".day span.current").removeClass("current");
  454. nextday.addClass("current");
  455. dayi++;
  456. if(dayi>Time.days.length){
  457. dayi=1;
  458. }
  459. }
  460. //进月
  461. var dayText=$(".day span.current").text();
  462. if((dayText=="1 day"||dayText==numToSimp(1)+"日"||dayText==numToTrad(1)+"日"||dayText=="1日")&&(secText=="0秒"||secText=="零秒"||secText=="0 s") && (minText=="0分"||minText=="零分"||minText=="0 m")&&(hourText=="0时"||hourText=="零时"||hourText=="0 h")){
  463. var monthang1=30*(monthi-1);
  464. var monthang2=30*monthi;
  465. var next=$(".month span.current").next();
  466. if(next.text()==""){
  467. next=$(".month span").first();
  468. }
  469. $(".month").css("animation","monthRun"+monthi+" 0.5s ease-in-out");
  470. $(".month").css("animation-fill-mode","forwards");
  471. style.insertRule("@keyframes monthRun"+monthi+" {0%{transform: rotateZ("+monthang1+"deg);transform-origin: -"+monthLeft+" "+top+";} 100%{transform:rotateZ("+monthang2+"deg);transform-origin: -"+monthLeft+" "+top+";}}",style.rules.length);
  472. month++;
  473. if(month>12)
  474. {
  475. month=1;
  476. }
  477. //更新日
  478. $(".day").html("");
  479. Time.days=updateDays(type,year,month,1);
  480. Time.currentTime.day=getFirstDay(type);
  481. $(".main-content .day").append("<span class='current'>"+Time.currentTime.day+Time.dayUnit+"</span>");
  482. for (const key in Time.days) {
  483. if (Time.days.hasOwnProperty(key)) {
  484. const element = Time.days[key];
  485. if(element!=Time.currentTime.day){
  486. $(".main-content .day").append("<span>"+element+Time.dayUnit+"</span>");
  487. }
  488. }
  489. }
  490. $(".day span").each(function(index,element){
  491. $(element).css("animation","day"+index+" 0.5s linear");
  492. $(element).css("animation-fill-mode","forwards");
  493. style.insertRule("@keyframes day"+index+"{0%{transform: rotateZ(0);transform-origin: -"+dayLeft+" "+top+";}100%{transform:rotateZ("+-(360/Time.days.length)*(index+1)+"deg);transform-origin: -"+dayLeft+" "+top+";}}",style.rules.length);
  494. });
  495. $(".month span.current").removeClass("current");
  496. next.addClass("current");
  497. monthi++;
  498. if(monthi>12){
  499. monthi=1;
  500. }
  501. }
  502. //进年
  503. if(month==1&&(dayText=="1 day"||dayText==numToSimp(1)+"日"||dayText==numToTrad(1)+"日"||dayText=="1日")&&(secText=="0秒"||secText=="零秒"||secText=="0 s") && (minText=="0分"||minText=="零分"||minText=="0 m")&&(hourText=="0时"||hourText=="零时"||hourText=="0 h")){
  504. year++;
  505. Time.currentTime.year=getYear(type,year);
  506. $(".year span").html(getYear(type,year)+Time.yearUnit);
  507. }
  508. }
  509. });
  510. function initTime(Time,type){
  511. switch (type) {
  512. case 0:
  513. Time.months=getMonths(0,Time.currentTime.month);
  514. Time.days=getdays(0,Time.currentTime.year,Time.currentTime.month,Time.currentTime.day);
  515. Time.weeks=getWeeks(0,Time.currentTime.week);
  516. Time.hours=getHours(0,Time.currentTime.hour);
  517. Time.minutes=getMinutes(0,Time.currentTime.minute);
  518. Time.seconds=getSeconds(0,Time.currentTime.second);
  519. Time.currentTime.week=Time.weekUnit+ getWeek(0,Time.currentTime.week);
  520. Time.currentTime.shichen=getShiChen(0,Time.currentTime.hour);
  521. Time.shichens=getShiChens(0,Time.currentTime.shichen);
  522. break;
  523. case 1:
  524. Time.months=getMonths(1,Time.currentTime.month);
  525. Time.days=getdays(1,Time.currentTime.year,Time.currentTime.month,Time.currentTime.day);
  526. Time.weeks=getWeeks(1,Time.currentTime.week);
  527. Time.hours=getHours(1,Time.currentTime.hour);
  528. Time.minutes=getMinutes(1,Time.currentTime.minute);
  529. Time.seconds=getSeconds(1,Time.currentTime.second);
  530. Time.currentTime.month=numToSimp(Time.currentTime.month);
  531. Time.currentTime.day=numToSimp(Time.currentTime.day);
  532. Time.currentTime.week=Time.weekUnit+getWeek(1,Time.currentTime.week);
  533. Time.currentTime.shichen=getShiChen(1,Time.currentTime.hour);
  534. Time.shichens=getShiChens(1,Time.currentTime.shichen);
  535. Time.currentTime.hour=numToSimp(Time.currentTime.hour);
  536. Time.currentTime.minute=numToSimp(Time.currentTime.minute);
  537. Time.currentTime.second=numToSimp(Time.currentTime.second);
  538. Time.currentTime.year=getYear(1,Time.currentTime.year);
  539. break;
  540. case 2:
  541. Time.months=getMonths(2,Time.currentTime.month);
  542. Time.days=getdays(2,Time.currentTime.year,Time.currentTime.month,Time.currentTime.day);
  543. Time.weeks=getWeeks(2,Time.currentTime.week);
  544. Time.hours=getHours(2,Time.currentTime.hour);
  545. Time.minutes=getMinutes(2,Time.currentTime.minute);
  546. Time.seconds=getSeconds(2,Time.currentTime.second);
  547. Time.currentTime.month=numToTrad(Time.currentTime.month);
  548. Time.currentTime.day=numToTrad(Time.currentTime.day);
  549. Time.currentTime.week=Time.weekUnit+getWeek(2,Time.currentTime.week);
  550. Time.currentTime.shichen=getShiChen(2,Time.currentTime.hour);
  551. Time.shichens=getShiChens(2,Time.currentTime.shichen);
  552. Time.currentTime.hour=numToTrad(Time.currentTime.hour);
  553. Time.currentTime.minute=numToTrad(Time.currentTime.minute);
  554. Time.currentTime.second=numToTrad(Time.currentTime.second);
  555. Time.currentTime.year=getYear(2,Time.currentTime.year);
  556. break;
  557. case 3:
  558. Time.months=getMonths(3,Time.currentTime.month);
  559. Time.days=getdays(0,Time.currentTime.year,Time.currentTime.month,Time.currentTime.day);
  560. Time.weeks=getWeeks(3,Time.currentTime.week);
  561. Time.hours=getHours(3,Time.currentTime.hour);
  562. Time.minutes=getMinutes(3,Time.currentTime.minute);
  563. Time.seconds=getSeconds(3,Time.currentTime.second);
  564. Time.currentTime.month=getMonthEng(Time.currentTime.month);
  565. Time.currentTime.week=getWeek(3,Time.currentTime.week);
  566. Time.currentTime.shichen=getShiChen(3,Time.currentTime.hour);
  567. Time.shichens=getShiChens(3,Time.currentTime.shichen);
  568. // Time.currentTime.hour=numToEng(Time.currentTime.hour);
  569. // Time.currentTime.minute=numToEng(Time.currentTime.minute);
  570. // Time.currentTime.second=numToEng(Time.currentTime.second);
  571. Time.monthUnit="";
  572. Time.dayUnit=" day"
  573. Time.weekUnit=""
  574. Time.hourUnit=" h"
  575. Time.minuteUnit=" m"
  576. Time.secondUnit=" s"
  577. Time.yearUnit=" Year"
  578. break;
  579. }
  580. }
  581. </script>
  582. <script>
  583. //简体
  584. function numToSimp(n){
  585. var str = "";
  586. var units=parseInt(n%10);
  587. var tens=parseInt(n/10);
  588. var trans="零一二三四五六七八九十";
  589. if(tens>1){
  590. str=trans.charAt(tens);
  591. }
  592. if(tens!=0){
  593. str+="十";
  594. }
  595. if(units!=0){
  596. str += trans.charAt(units);
  597. }
  598. if(tens==0&&units==0){
  599. str=trans[0];
  600. }
  601. return str;
  602. }
  603. //繁体
  604. function numToTrad(n){
  605. var str = "";
  606. var units=parseInt(n%10);
  607. var tens=parseInt(n/10);
  608. var trans="零壹贰叁肆伍陆柒捌玖";
  609. if(tens>1){
  610. str=trans.charAt(tens);
  611. }
  612. if(tens!=0){
  613. str+="拾";
  614. }
  615. if(units!=0){
  616. str += trans.charAt(units);
  617. }
  618. if(tens==0&&units==0){
  619. str=trans[0];
  620. }
  621. return str;
  622. }
  623. //英文
  624. function numToEng(n){
  625. var str = "";
  626. var units=parseInt(n%10);
  627. var tens=parseInt(n/10);
  628. var trans=[
  629. ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine","ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"],
  630. ["twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"],
  631. ];
  632. if(n<20)
  633. {
  634. str=trans[0][n];
  635. }else{
  636. str=trans[1][tens-2];
  637. if(units!=0){
  638. str+=trans[0][units];
  639. }
  640. }
  641. if(tens==0&&units==0){
  642. str=trans[0][0];
  643. }
  644. return str;
  645. }
  646. function isLeapYear(year){
  647. if(year % 4 == 0 && year %100 != 0 ||year % 400 == 0)
  648. {
  649. return true;
  650. }else{
  651. return false;
  652. }
  653. }
  654. function getYear(type,year){
  655. var res=""
  656. var units=parseInt(year/1%10);
  657. var tens=parseInt(year/10%10);
  658. var hund=parseInt(year/100%10);
  659. var thou=parseInt(year/1000%10);
  660. switch(type){
  661. case 0:
  662. case 3:
  663. res=year;
  664. break;
  665. case 1:
  666. res=numToSimp(thou)+numToSimp(hund)+numToSimp(tens)+numToSimp(units);
  667. break;
  668. case 2:
  669. res=numToTrad(thou)+numToTrad(hund)+numToTrad(tens)+numToTrad(units);
  670. break;
  671. }
  672. return res;
  673. }
  674. /*
  675. 获取月份
  676. 参数:0 阿拉伯数字 1简体 2繁体 3英文
  677. */
  678. function getMonths(type,month){
  679. var months=new Array();
  680. var monthsEng=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
  681. var i=1;
  682. switch (type) {
  683. case 0:
  684. for(i=month;i<=12;i++)
  685. {
  686. months.push(i);
  687. }
  688. for(i=1;i<month;i++)
  689. {
  690. months.push(i);
  691. }
  692. break;
  693. case 1:
  694. for(i=month;i<=12;i++)
  695. {
  696. months.push(numToSimp(i));
  697. }
  698. for(i=1;i<month;i++)
  699. {
  700. months.push(numToSimp(i));
  701. }
  702. break;
  703. case 2:
  704. for(i=month;i<=12;i++)
  705. {
  706. months.push(numToTrad(i));
  707. }
  708. for(i=1;i<month;i++)
  709. {
  710. months.push(numToTrad(i));
  711. }
  712. break;
  713. case 3:
  714. for(i=month-1;i<12;i++)
  715. {
  716. months.push(monthsEng[i]);
  717. }
  718. for(i=0;i<month-1;i++)
  719. {
  720. months.push(monthsEng[i]);
  721. }
  722. break;
  723. }
  724. return months;
  725. }
  726. function getdays(type,year,month,day){
  727. var days=new Array();
  728. var j=1;
  729. var isLeap=isLeapYear(year);
  730. switch (type) {
  731. case 0:
  732. case 3:
  733. for(j=day;j<=31;j++)
  734. {
  735. days.push(j)
  736. if(month==2&&isLeap&&j==29){
  737. break;
  738. }
  739. if(month==2&&!isLeap&&j==28){
  740. break;
  741. }
  742. if((month==2||month==4||month==6||month==9||month==11)&&j==30){
  743. break;
  744. }
  745. }
  746. for(j=1;j<day;j++){
  747. days.push(j)
  748. }
  749. break;
  750. case 1:
  751. for(j=day;j<=31;j++)
  752. {
  753. days.push(numToSimp(j))
  754. if(month==2&&isLeap&&j==29){
  755. break;
  756. }
  757. if(month==2&&!isLeap&&j==28){
  758. break;
  759. }
  760. if((month==2||month==4||month==6||month==9||month==11)&&j==30){
  761. break;
  762. }
  763. }
  764. for(j=1;j<day;j++){
  765. days.push(numToSimp(j))
  766. }
  767. break;
  768. case 2:
  769. for(j=day;j<=31;j++)
  770. {
  771. days.push(numToTrad(j))
  772. if(month==2&&isLeap&&j==29){
  773. break;
  774. }
  775. if(month==2&&!isLeap&&j==28){
  776. break;
  777. }
  778. if((month==2||month==4||month==6||month==9||month==11)&&j==30){
  779. break;
  780. }
  781. }
  782. for(j=1;j<day;j++){
  783. days.push(numToTrad(j))
  784. }
  785. break;
  786. }
  787. return days;
  788. }
  789. function getShiChen(type,hour){
  790. var shichen={
  791. index:0,
  792. str:""
  793. };
  794. switch(type){
  795. case 0:
  796. if(hour>=23||hour<1){
  797. shichen.index=0;
  798. shichen.str="23:00-1:00";
  799. }
  800. else if(hour>=1&&hour<3){
  801. shichen.index=1;
  802. shichen.str="1:00-3:00";
  803. }
  804. else if(hour>=3&&hour<5){
  805. shichen.index=2;
  806. shichen.str="3:00-5:00";
  807. }
  808. else if(hour>=5&&hour<7){
  809. shichen.index=3;
  810. shichen.str="5:00-7:00";
  811. }
  812. else if(hour>=7&&hour<9){
  813. shichen.index=4;
  814. shichen.str="7:00-9:00";
  815. }
  816. else if(hour>=9&&hour<11){
  817. shichen.index=5;
  818. shichen.str="9:00-11:00";
  819. }
  820. else if(hour>=11&&hour<13){
  821. shichen.index=6;
  822. shichen.str="11:00-13:00";
  823. }
  824. else if(hour>=13&&hour<15){
  825. shichen.index=7;
  826. shichen.str="13:00-15:00";
  827. }
  828. else if(hour>=15&&hour<17){
  829. shichen.index=8;
  830. shichen.str="15:00-17:00";
  831. }
  832. else if(hour>=17&&hour<19){
  833. shichen.index=9;
  834. shichen.str="17:00-19:00";
  835. }
  836. else if(hour>=19&&hour<21){
  837. shichen.index=10;
  838. shichen.str="19:00-21:00";
  839. }
  840. else if(hour>=21&&hour<23){
  841. shichen.index=11;
  842. shichen.str="21:00-23:00";
  843. }
  844. break;
  845. case 1:
  846. case 2:
  847. if(hour>=23||hour<1){
  848. shichen.index=0;
  849. shichen.str="子时"
  850. }
  851. else if(hour>=1&&hour<3){
  852. shichen.index=1;
  853. shichen.str="丑时";
  854. }
  855. else if(hour>=3&&hour<5){
  856. shichen.index=2;
  857. shichen.str="寅时";
  858. }
  859. else if(hour>=5&&hour<7){
  860. shichen.index=3;
  861. shichen.str="卯时";
  862. }
  863. else if(hour>=7&&hour<9){
  864. shichen.index=4;
  865. shichen.str="辰时";
  866. }
  867. else if(hour>=9&&hour<11){
  868. shichen.index=5;
  869. shichen.str="巳时";
  870. }
  871. else if(hour>=11&&hour<13){
  872. shichen.index=6;
  873. shichen.str="午时";
  874. }
  875. else if(hour>=13&&hour<15){
  876. shichen.index=7;
  877. shichen.str="未时";
  878. }
  879. else if(hour>=15&&hour<17){
  880. shichen.index=8;
  881. shichen.str="申时";
  882. }
  883. else if(hour>=17&&hour<19){
  884. shichen.index=9;
  885. shichen.str="酉时";
  886. }
  887. else if(hour>=19&&hour<21){
  888. shichen.index=10;
  889. shichen.str="戌时";
  890. }
  891. else if(hour>=21&&hour<23){
  892. shichen.index=11;
  893. shichen.str="亥时";
  894. }
  895. break;
  896. case 3:
  897. if(hour>=23||hour<1){
  898. shichen.index=0;
  899. shichen.str="23pm to 1am"
  900. }
  901. else if(hour>=1&&hour<3){
  902. shichen.index=1;
  903. shichen.str="1am to 3am"
  904. }
  905. else if(hour>=3&&hour<5){
  906. shichen.index=2;
  907. shichen.str="3am to 5am"
  908. }
  909. else if(hour>=5&&hour<7){
  910. shichen.index=3;
  911. shichen.str="5pm to 7am"
  912. }
  913. else if(hour>=7&&hour<9){
  914. shichen.index=4;
  915. shichen.str="7pm to 9am"
  916. }
  917. else if(hour>=9&&hour<11){
  918. shichen.index=5;
  919. shichen.str="9pm to 11am"
  920. }
  921. else if(hour>=11&&hour<13){
  922. shichen.index=6;
  923. shichen.str="11am to 13pm"
  924. }
  925. else if(hour>=13&&hour<15){
  926. shichen.index=7;
  927. shichen.str="13pm to 15pm"
  928. }
  929. else if(hour>=15&&hour<17){
  930. shichen.index=8;
  931. shichen.str="15pm to 17pm"
  932. }
  933. else if(hour>=17&&hour<19){
  934. shichen.index=9;
  935. shichen.str="17pm to 19pm"
  936. }
  937. else if(hour>=19&&hour<21){
  938. shichen.index=10;
  939. shichen.str="19pm to 21pm"
  940. }
  941. else if(hour>=21&&hour<23){
  942. shichen.index=11;
  943. shichen.str="21pm to 23pm"
  944. }
  945. break;
  946. }
  947. return shichen;
  948. }
  949. function getShiChens(type,shichen){
  950. var shichens=new Array();
  951. var i=0;
  952. var shichen0=["23:00-1:00","1:00-3:00","3:00-5:00","5:00-7:00","7:00-9:00","9:00-11:00","11:00-13:00","13:00-15:00","15:00-17:00","17:00-19:00","19:00-21:00","21:00-23:00"];
  953. var shichen1=["子时","丑时","寅时","卯时","辰时","巳时","午时","未时","申时","酉时","戌时","亥时"];
  954. var shichen3=["23pm to 1am","1am to 3am","3am to 5am","5pm to 7am","7pm to 9am","9pm to 11am","11am to 13pm","13pm to 15pm","15pm to 17pm","17pm to 19pm","19pm to 21pm","21pm to 23pm"];
  955. switch(type){
  956. case 0:
  957. for(i=shichen.index;i<12;i++){
  958. shichens.push(shichen0[i]);
  959. }
  960. for(i=0;i<shichen.index;i++){
  961. shichens.push(shichen0[i]);
  962. }
  963. break;
  964. case 1:
  965. case 2:
  966. for(i=shichen.index;i<12;i++){
  967. shichens.push(shichen1[i]);
  968. }
  969. for(i=0;i<shichen.index;i++){
  970. shichens.push(shichen1[i]);
  971. }
  972. break;
  973. case 3:
  974. for(i=shichen.index;i<12;i++){
  975. shichens.push(shichen3[i]);
  976. }
  977. for(i=0;i<shichen.index;i++){
  978. shichens.push(shichen3[i]);
  979. }
  980. break;
  981. }
  982. return shichens;
  983. }
  984. function getMonthEng(month){
  985. var monthsEng=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
  986. return monthsEng[month-1];
  987. }
  988. function getWeeks(type,week){
  989. weeks=[];
  990. weeksEng=["Sun","Mon","Tues","Wed","Thur","Fri","Sat"];
  991. var i=0;
  992. switch(type){
  993. case 0:
  994. case 1:
  995. case 2:
  996. for(i=week;i<7;i++){
  997. weeks[i]="星期"+numToSimp(i);
  998. if(i==0){
  999. weeks[i]="星期日"
  1000. }
  1001. }
  1002. for(i=0;i<week;i++){
  1003. weeks[i]="星期"+numToSimp(i);
  1004. }
  1005. break;
  1006. case 3:
  1007. for(i=week;i<7;i++)
  1008. {
  1009. weeks.push(weeksEng[i]);
  1010. }
  1011. for(i=0;i<week;i++)
  1012. {
  1013. weeks.push(weeksEng[i]);
  1014. }
  1015. break;
  1016. }
  1017. return weeks;
  1018. }
  1019. function getWeek(type,week){
  1020. weekEng=["Sun","Mon","Tues","Wed","Thur","Fri","Sat"];
  1021. res="";
  1022. switch(type){
  1023. case 0:
  1024. case 1:
  1025. case 2:
  1026. if(week==0){
  1027. res="日"
  1028. }else{
  1029. res=numToSimp(week);
  1030. }
  1031. break;
  1032. case 3:
  1033. res=weekEng[week];
  1034. break;
  1035. }
  1036. return res;
  1037. }
  1038. function getHours(type,hour){
  1039. var hours=new Array();
  1040. var i=0;
  1041. switch(type){
  1042. case 0:
  1043. case 3:
  1044. for(i=hour;i<24;i++){
  1045. hours.push(i);
  1046. }
  1047. for(i=0;i<hour;i++){
  1048. hours.push(i);
  1049. }
  1050. break;
  1051. case 1:
  1052. for(i=hour;i<24;i++){
  1053. hours.push(numToSimp(i));
  1054. }
  1055. for(i=0;i<hour;i++){
  1056. hours.push(numToSimp(i));
  1057. }
  1058. break;
  1059. case 2:
  1060. for(i=hour;i<24;i++){
  1061. hours.push(numToTrad(i));
  1062. }
  1063. for(i=0;i<hour;i++){
  1064. hours.push(numToTrad(i));
  1065. }
  1066. break;
  1067. // case 3:
  1068. // for(i=hour;i<24;i++){
  1069. // hours.push(numToEng(i));
  1070. // }
  1071. // for(i=0;i<hour;i++){
  1072. // hours.push(numToEng(i));
  1073. // }
  1074. // break;
  1075. }
  1076. return hours;
  1077. }
  1078. function getMinutes(type,minute){
  1079. var minutes=new Array();
  1080. var i=0;
  1081. switch(type){
  1082. case 0:
  1083. case 3:
  1084. for(i=minute;i<60;i++){
  1085. minutes.push(i);
  1086. }
  1087. for(i=0;i<minute;i++){
  1088. minutes.push(i);
  1089. }
  1090. break;
  1091. case 1:
  1092. for(i=minute;i<60;i++){
  1093. minutes.push(numToSimp(i));
  1094. }
  1095. for(i=0;i<minute;i++){
  1096. minutes.push(numToSimp(i));
  1097. }
  1098. break;
  1099. case 2:
  1100. for(i=minute;i<60;i++){
  1101. minutes.push(numToTrad(i));
  1102. }
  1103. for(i=0;i<minute;i++){
  1104. minutes.push(numToTrad(i));
  1105. }
  1106. break;
  1107. // case 3:
  1108. // for(i=minute;i<60;i++){
  1109. // minutes.push(numToEng(i));
  1110. // }
  1111. // for(i=0;i<minute;i++){
  1112. // minutes.push(numToEng(i));
  1113. // }
  1114. // break;
  1115. }
  1116. return minutes;
  1117. }
  1118. function getSeconds(type,second){
  1119. var seconds=new Array();
  1120. var i=0;
  1121. switch(type){
  1122. case 0:
  1123. case 3:
  1124. for(i=second;i<60;i++){
  1125. seconds.push(i);
  1126. }
  1127. for(i=0;i<second;i++){
  1128. seconds.push(i);
  1129. }
  1130. break;
  1131. case 1:
  1132. for(i=second;i<60;i++){
  1133. seconds.push(numToSimp(i));
  1134. }
  1135. for(i=0;i<second;i++){
  1136. seconds.push(numToSimp(i));
  1137. }
  1138. break;
  1139. case 2:
  1140. for(i=second;i<60;i++){
  1141. seconds.push(numToTrad(i));
  1142. }
  1143. for(i=0;i<second;i++){
  1144. seconds.push(numToTrad(i));
  1145. }
  1146. break;
  1147. // case 3:
  1148. // for(i=second;i<60;i++){
  1149. // seconds.push(numToEng(i));
  1150. // }
  1151. // for(i=0;i<second;i++){
  1152. // seconds.push(numToEng(i));
  1153. // }
  1154. // break;
  1155. }
  1156. return seconds;
  1157. }
  1158. function isShichen(hour){
  1159. if(hour=="one h"||hour=="three h"||hour=="five h"||hour=="seven h"||hour=="nine h"||hour=="eleven h"||hour=="thirteen h"||hour=="fifteen h"||hour=="seventeen h"||hour=="nineteen h"||hour=="twentyone h"||hour=="twentythree h"
  1160. ||hour=="1时"||hour=="3时"||hour=="5时"||hour=="7时"||hour=="9时"||hour=="11时"||hour=="13时"||hour=="15时"||hour=="17时"||hour=="19时"||hour=="21时"||hour=="23时"
  1161. ||hour=="一时"||hour=="三时"||hour=="五时"||hour=="七时"||hour=="九时"||hour=="十一时"||hour=="十三时"||hour=="十五时"||hour=="十七时"||hour=="十九时"||hour=="二十一时"||hour=="二十三时"
  1162. ||hour=="壹时"||hour=="叁时"||hour=="伍时"||hour=="柒时"||hour=="玖时"||hour=="拾壹时"||hour=="拾叁时"||hour=="拾伍时"||hour=="拾柒时"||hour=="拾玖时"||hour=="贰拾壹时"||hour=="贰拾叁时"
  1163. ||hour=="1 h"||hour=="3 h"||hour=="5 h"||hour=="7 h"||hour=="9 h"||hour=="11 h"||hour=="13 h"||hour=="15 h"||hour=="17 h"||hour=="19 h"||hour=="21 h"||hour=="23 h"){
  1164. return true;
  1165. }
  1166. return false;
  1167. }
  1168. function updateDays(type,year,month,day){
  1169. var days=new Array();
  1170. var j=1;
  1171. var isLeap=isLeapYear(year);
  1172. switch (type) {
  1173. case 0:
  1174. case 3:
  1175. for(j=day;j<=31;j++)
  1176. {
  1177. days.push(j)
  1178. if(month==2&&isLeap&&j==29){
  1179. break;
  1180. }
  1181. if(month==2&&!isLeap&&j==28){
  1182. break;
  1183. }
  1184. if((month==2||month==4||month==6||month==9||month==11)&&j==30){
  1185. break;
  1186. }
  1187. }
  1188. for(j=1;j<day;j++){
  1189. days.push(j)
  1190. }
  1191. break;
  1192. case 1:
  1193. for(j=1;j<=31;j++)
  1194. {
  1195. days.push(numToSimp(j))
  1196. if(month==2&&isLeap&&j==29){
  1197. break;
  1198. }
  1199. if(month==2&&!isLeap&&j==28){
  1200. break;
  1201. }
  1202. if((month==2||month==4||month==6||month==9||month==11)&&j==30){
  1203. break;
  1204. }
  1205. }
  1206. for(j=1;j<day;j++){
  1207. days.push(numToSimp(j))
  1208. }
  1209. break;
  1210. case 2:
  1211. for(j=1;j<=31;j++)
  1212. {
  1213. days.push(numToTrad(j))
  1214. if(month==2&&isLeap&&j==29){
  1215. break;
  1216. }
  1217. if(month==2&&!isLeap&&j==28){
  1218. break;
  1219. }
  1220. if((month==2||month==4||month==6||month==9||month==11)&&j==30){
  1221. break;
  1222. }
  1223. }
  1224. for(j=1;j<day;j++){
  1225. days.push(numToTrad(j))
  1226. }
  1227. break;
  1228. }
  1229. return days;
  1230. }
  1231. function getFirstDay(type){
  1232. day=1;
  1233. switch (type) {
  1234. case 1:
  1235. day=numToSimp(day);
  1236. break;
  1237. case 2:
  1238. day=numToTrad(day);
  1239. break;
  1240. }
  1241. return day;
  1242. }
  1243. </script>
  1244. <style>
  1245. *{
  1246. margin: 0;
  1247. padding: 0;
  1248. }
  1249. body{
  1250. /* background-color: black; */
  1251. /* color: white; */
  1252. background: url("./timg.jpg") no-repeat;
  1253. background-size: 100% 100%;
  1254. background-attachment: fixed;
  1255. color: #F5F4F6;
  1256. font-size: 12px;
  1257. font-weight: bold;
  1258. overflow: hidden;
  1259. width: 1000px;
  1260. height: 900px;
  1261. }
  1262. .current{
  1263. color: #D1A3F7;
  1264. }
  1265. .main-content{
  1266. position: absolute;
  1267. top:50%;
  1268. left: 50%;
  1269. }
  1270. .main-content .year{
  1271. position: relative;
  1272. top: -13px;
  1273. left: -38px;
  1274. text-align: center
  1275. }
  1276. .main-content .year span{
  1277. position: absolute;
  1278. width: 80px;
  1279. }
  1280. .main-content .month{
  1281. position: relative;
  1282. top: -13px;
  1283. left: 40px;
  1284. }
  1285. .month span{
  1286. position: absolute;
  1287. width: 60px;
  1288. }
  1289. .main-content .day{
  1290. position: relative;
  1291. top: -13px;
  1292. left: 85px;
  1293. }
  1294. .day span{
  1295. position: absolute;
  1296. width: 65px;
  1297. }
  1298. .main-content .week{
  1299. position: relative;
  1300. top: -13px;
  1301. left: 145px;
  1302. }
  1303. .week span{
  1304. position: absolute;
  1305. width: 65px;
  1306. }
  1307. .main-content .shichen{
  1308. position: relative;
  1309. top: -13px;
  1310. left: 200px;
  1311. }
  1312. .shichen span{
  1313. position: absolute;
  1314. width: 125px;
  1315. }
  1316. .main-content .hour{
  1317. position: relative;
  1318. top: -13px;
  1319. left: 240px;
  1320. }
  1321. .hour span{
  1322. position: absolute;
  1323. width: 60px;
  1324. }
  1325. .main-content .minute{
  1326. position: relative;
  1327. top: -13px;
  1328. left: 300px;
  1329. }
  1330. .minute span{
  1331. position: absolute;
  1332. width: 60px;
  1333. }
  1334. .main-content .second{
  1335. position: relative;
  1336. top: -13px;
  1337. left: 370px;
  1338. }
  1339. .second span{
  1340. position: absolute;
  1341. width: 60px;
  1342. }
  1343. </style>
  1344. </head>
  1345. <body>
  1346. <div class="main-content">
  1347. <div class="year">
  1348. <!-- <span>2019</span> -->
  1349. </div>
  1350. <div class="month"></div>
  1351. <div class="day"></div>
  1352. <div class="week"></div>
  1353. <div class="shichen"></div>
  1354. <div class="hour"></div>
  1355. <div class="minute"></div>
  1356. <div class="second"></div>
  1357. </div>
  1358. </body>
  1359. </html>

6、渐变字

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>渐变字</title>
  8. </head>
  9. <style>
  10. body {
  11. margin: 0px;
  12. }
  13. #container {
  14. position: absolute;
  15. margin: auto;
  16. width: 100vw;
  17. height: 80pt;
  18. top: 0;
  19. bottom: 0;
  20. filter: url(#threshold) blur(0.6px);
  21. }
  22. #text1,
  23. #text2 {
  24. position: absolute;
  25. width: 100%;
  26. display: inline-block;
  27. color:red;
  28. font-family: 'Raleway', sans-serif;
  29. font-size: 80pt;
  30. text-align: center;
  31. user-select: none;
  32. }
  33. </style>
  34. <body>
  35. <div id="container">
  36. <span id="text1"></span>
  37. <span id="text2"></span>
  38. </div>
  39. <svg id="filters">
  40. <defs>
  41. <filter id="threshold">
  42. <feColorMatrix in="SourceGraphic" type="matrix" values="1 0 0 0 0
  43. 0 1 0 0 0
  44. 0 0 1 0 0
  45. 0 0 0 255 -140" />
  46. </filter>
  47. </defs>
  48. </svg>
  49. <script>
  50. const elts = {
  51. text1: document.getElementById("text1"),
  52. text2: document.getElementById("text2")
  53. };
  54. const texts = [
  55. "欢迎",
  56. "来到",
  57. "CSDN"
  58. ];
  59. const morphTime = 1;
  60. const cooldownTime = 0.25;
  61. let textIndex = texts.length - 1;
  62. let time = new Date();
  63. let morph = 0;
  64. let cooldown = cooldownTime;
  65. elts.text1.textContent = texts[textIndex % texts.length];
  66. elts.text2.textContent = texts[(textIndex + 1) % texts.length];
  67. function doMorph() {
  68. morph -= cooldown;
  69. cooldown = 0;
  70. let fraction = morph / morphTime;
  71. if (fraction > 1) {
  72. cooldown = cooldownTime;
  73. fraction = 1;
  74. }
  75. setMorph(fraction);
  76. }
  77. function setMorph(fraction) {
  78. elts.text2.style.filter = `blur(${Math.min(8 / fraction - 8, 100)}px)`;
  79. elts.text2.style.opacity = `${Math.pow(fraction, 0.4) * 100}%`;
  80. fraction = 1 - fraction;
  81. elts.text1.style.filter = `blur(${Math.min(8 / fraction - 8, 100)}px)`;
  82. elts.text1.style.opacity = `${Math.pow(fraction, 0.4) * 100}%`;
  83. elts.text1.textContent = texts[textIndex % texts.length];
  84. elts.text2.textContent = texts[(textIndex + 1) % texts.length];
  85. }
  86. function doCooldown() {
  87. morph = 0;
  88. elts.text2.style.filter = "";
  89. elts.text2.style.opacity = "100%";
  90. elts.text1.style.filter = "";
  91. elts.text1.style.opacity = "0%";
  92. }
  93. function animate() {
  94. requestAnimationFrame(animate);
  95. let newTime = new Date();
  96. let shouldIncrementIndex = cooldown > 0;
  97. let dt = (newTime - time) / 1200;
  98. time = newTime;
  99. cooldown -= dt;
  100. if (cooldown <= 0) {
  101. if (shouldIncrementIndex) {
  102. textIndex++;
  103. }
  104. doMorph();
  105. } else {
  106. doCooldown();
  107. }
  108. }
  109. animate();
  110. </script>
  111. </body>
  112. </html>

代码部分来源于网站,如有侵权,请联系删除。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/186564
推荐阅读
相关标签
  

闽ICP备14008679号