- v 3.0 + v 3.2 @@ -492,7 +494,6 @@ - diff --git a/js/cursor.js b/js/cursor.js deleted file mode 100644 index 0d5c55f..0000000 --- a/js/cursor.js +++ /dev/null @@ -1,95 +0,0 @@ -var CURSOR; - -Math.lerp = (a, b, n) => (1 - n) * a + n * b; - -const getStyle = (el, attr) => { - try { - return window.getComputedStyle ? - window.getComputedStyle(el)[attr] : - el.currentStyle[attr]; - } catch (e) {} - return ""; -}; - -class Cursor { - constructor() { - this.pos = { - curr: null, - prev: null - }; - this.pt = []; - this.create(); - this.init(); - this.render(); - } - - move(left, top) { - this.cursor.style["left"] = `${left}px`; - this.cursor.style["top"] = `${top}px`; - } - - create() { - if (!this.cursor) { - this.cursor = document.createElement("div"); - this.cursor.id = "cursor"; - this.cursor.classList.add("hidden"); - document.body.append(this.cursor); - } - - var el = document.getElementsByTagName('*'); - for (let i = 0; i < el.length; i++) - if (getStyle(el[i], "cursor") == "pointer") - this.pt.push(el[i].outerHTML); - - document.body.appendChild((this.scr = document.createElement("style"))); - this.scr.innerHTML = `* {cursor: url("data:image/svg+xml,") 4 4, auto !important}`; - } - - refresh() { - this.scr.remove(); - this.cursor.classList.remove("hover"); - this.cursor.classList.remove("active"); - this.pos = { - curr: null, - prev: null - }; - this.pt = []; - - this.create(); - this.init(); - this.render(); - } - - init() { - document.onmouseover = e => this.pt.includes(e.target.outerHTML) && this.cursor.classList.add("hover"); - document.onmouseout = e => this.pt.includes(e.target.outerHTML) && this.cursor.classList.remove("hover"); - document.onmousemove = e => { - (this.pos.curr == null) && this.move(e.clientX - 8, e.clientY - 8); - this.pos.curr = { - x: e.clientX - 8, - y: e.clientY - 8 - }; - this.cursor.classList.remove("hidden"); - }; - document.onmouseenter = e => this.cursor.classList.remove("hidden"); - document.onmouseleave = e => this.cursor.classList.add("hidden"); - document.onmousedown = e => this.cursor.classList.add("active"); - document.onmouseup = e => this.cursor.classList.remove("active"); - } - - render() { - if (this.pos.prev) { - this.pos.prev.x = Math.lerp(this.pos.prev.x, this.pos.curr.x, 0.45); - this.pos.prev.y = Math.lerp(this.pos.prev.y, this.pos.curr.y, 0.45); - this.move(this.pos.prev.x, this.pos.prev.y); - } else { - this.pos.prev = this.pos.curr; - } - requestAnimationFrame(() => this.render()); - } -} - -(() => { - CURSOR = new Cursor(); - // 需要重新获取列表时,使用 CURSOR.refresh() -})(); \ No newline at end of file diff --git a/js/main.js b/js/main.js index 0b3cffc..962dea6 100644 --- a/js/main.js +++ b/js/main.js @@ -23,6 +23,23 @@ iziToast.settings({ iconColor: '#efefef', }); +/* 鼠标样式 */ +const body = document.querySelector("body"); +const element = document.getElementById("g-pointer-1"); +const element2 = document.getElementById("g-pointer-2"); +const halfAlementWidth = element.offsetWidth / 2; +const halfAlementWidth2 = element2.offsetWidth / 2; + +function setPosition(x, y) { + element2.style.transform = `translate(${x - halfAlementWidth2 + 1}px, ${y - halfAlementWidth2 + 1}px)`; +} + +body.addEventListener('mousemove', (e) => { + window.requestAnimationFrame(function () { + setPosition(e.clientX, e.clientY); + }); +}); + //加载完成后执行 window.addEventListener('load', function () {