/* ============================ 郑州晟算科技有限公司 - 交互脚本 v3 自定义光标 · 启动加载屏 · 3D倾斜 · 磁性按钮 · 乱序解码 ============================ */ (function () { "use strict"; /* ======================================== 1. 自定义光标 ======================================== */ const isTouchDevice = "ontouchstart" in window || navigator.maxTouchPoints > 0; if (!isTouchDevice) { const dot = document.createElement("div"); dot.className = "cursor-dot"; const ring = document.createElement("div"); ring.className = "cursor-ring"; document.body.appendChild(dot); document.body.appendChild(ring); let dotX = 0, dotY = 0; let ringX = 0, ringY = 0; let mouseX = 0, mouseY = 0; let isVisible = false; let cursorActivated = false; document.addEventListener("mousemove", function (e) { mouseX = e.clientX; mouseY = e.clientY; if (!isVisible) { isVisible = true; dot.style.opacity = "1"; ring.style.opacity = "1"; // 确认自定义光标工作后才隐藏系统光标 if (!cursorActivated) { cursorActivated = true; document.body.classList.add("custom-cursor-active"); } } }); document.addEventListener("mouseleave", function () { isVisible = false; dot.style.opacity = "0"; ring.style.opacity = "0"; }); document.addEventListener("mousedown", function () { ring.classList.add("clicking"); }); document.addEventListener("mouseup", function () { ring.classList.remove("clicking"); }); // 检测可交互元素 const hoverables = document.querySelectorAll("a, button, .card, .teaser-card, .feature-card, .belief-card, .philosophy-item, input, textarea, select, .nav-cta, .structure-item, .vision-item"); hoverables.forEach(function (el) { el.addEventListener("mouseenter", function () { ring.classList.add("hovering"); }); el.addEventListener("mouseleave", function () { ring.classList.remove("hovering"); }); }); function animateCursor() { // 点:即时跟随 dotX += (mouseX - dotX) * 0.35; dotY += (mouseY - dotY) * 0.35; dot.style.left = dotX + "px"; dot.style.top = dotY + "px"; // 环:延迟跟随 ringX += (mouseX - ringX) * 0.12; ringY += (mouseY - ringY) * 0.12; ring.style.left = ringX + "px"; ring.style.top = ringY + "px"; requestAnimationFrame(animateCursor); } animateCursor(); } /* ======================================== 2. 启动加载屏(太空模式下由space.js接管) ======================================== */ const isFirstVisit = !sessionStorage.getItem("visited"); if (!window.SPACE_MODE && isFirstVisit) { const loadingScreen = document.createElement("div"); loadingScreen.className = "loading-screen"; loadingScreen.innerHTML = '