From 00aaeb871a3e6b8c30a41e5b211437d8d9f6f651 Mon Sep 17 00:00:00 2001 From: mjking <1406993111@qq.com> Date: Mon, 11 Dec 2023 09:53:41 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=96=B0=E5=A2=9E=E9=BC=A0?= =?UTF-8?q?=E6=A0=87=E7=82=B9=E5=87=BB=E7=89=B9=E6=95=88=20-=20=E7=88=B1?= =?UTF-8?q?=E5=BF=83=E7=89=B9=E6=95=88=20(#74)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- settings.yaml | 4 +- src/js/cursor/click/heart.js | 51 +++++++++++++++++++ templates/assets/js/cursor/click/heart.min.js | 1 + 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 src/js/cursor/click/heart.js create mode 100644 templates/assets/js/cursor/click/heart.min.js diff --git a/settings.yaml b/settings.yaml index 2001d5a..adc4534 100644 --- a/settings.yaml +++ b/settings.yaml @@ -985,7 +985,9 @@ spec: - value: granule label: 粒子爆炸 - value: prosperous - label: 富强民主 + label: 富强民主 + - value: heart + label: 爱心特效 - $formkit: radio name: enable_sw label: "启用 Service Worker 优化" diff --git a/src/js/cursor/click/heart.js b/src/js/cursor/click/heart.js new file mode 100644 index 0000000..5e034a0 --- /dev/null +++ b/src/js/cursor/click/heart.js @@ -0,0 +1,51 @@ +!function (e, t, a) { + function r() { + for (var e = 0; e < s.length; e++) s[e].alpha <= 0 ? (t.body.removeChild(s[e].el), s.splice(e, 1)) : (s[ + e].y--, s[e].scale += .004, s[e].alpha -= .013, s[e].el.style.cssText = 'left:' + s[e].x + + 'px;top:' + s[e].y + 'px;opacity:' + s[e].alpha + ';transform:scale(' + s[e].scale + ',' + s[e].scale + ') rotate(45deg);background:' + s[e].color + ';z-index:99999') + requestAnimationFrame(r) + } + + function n() { + var t = 'function' == typeof e.onclick && e.onclick + e.onclick = function (e) { + t && t(), o(e) + } + } + + function o(e) { + var a = t.createElement('div') + a.className = 'heart', s.push({ + el: a, + x: e.clientX - 5, + y: e.clientY - 5, + scale: 1, + alpha: 1, + color: c() + }), t.body.appendChild(a) + } + + function i(e) { + var a = t.createElement('style') + a.type = 'text/css' + try { + a.appendChild(t.createTextNode(e)) + } catch (t) { + a.styleSheet.cssText = e + } + t.getElementsByTagName('head')[0].appendChild(a) + } + + function c() { + return 'rgb(' + ~~(255 * Math.random()) + ',' + ~~(255 * Math.random()) + ',' + ~~(255 * Math + .random()) + ')' + } + + var s = [] + e.requestAnimationFrame = e.requestAnimationFrame || e.webkitRequestAnimationFrame || e + .mozRequestAnimationFrame || e.oRequestAnimationFrame || e.msRequestAnimationFrame || function (e) { + setTimeout(e, 1e3 / 60) + }, i( + '.heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: \'\';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}' + ), n(), r() +}(window, document) diff --git a/templates/assets/js/cursor/click/heart.min.js b/templates/assets/js/cursor/click/heart.min.js new file mode 100644 index 0000000..e721516 --- /dev/null +++ b/templates/assets/js/cursor/click/heart.min.js @@ -0,0 +1 @@ +!function(e,a){var r,o=[],t=(e.requestAnimationFrame=e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)},".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}"),i=a.createElement("style");i.type="text/css";try{i.appendChild(a.createTextNode(t))}catch(e){i.styleSheet.cssText=t}a.getElementsByTagName("head")[0].appendChild(i),r="function"==typeof e.onclick&&e.onclick,e.onclick=function(e){var t;r&&r(),e=e,(t=a.createElement("div")).className="heart",o.push({el:t,x:e.clientX-5,y:e.clientY-5,scale:1,alpha:1,color:"rgb("+~~(255*Math.random())+","+~~(255*Math.random())+","+~~(255*Math.random())+")"}),a.body.appendChild(t)},function e(){for(var t=0;t