家谱现有接口调试50%

This commit is contained in:
rain
2026-07-09 17:29:25 +08:00
commit 6050508144
262 changed files with 63354 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
(function () {
// 只在精确指针设备上启用微动效,触屏和减少动效偏好下保持静态。
const finePointer = window.matchMedia("(hover: hover) and (pointer: fine)").matches;
const reduceMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
if (!finePointer || reduceMotion) return;
document.querySelectorAll(".tilt-card").forEach((card) => {
// 卡片倾斜角度通过 CSS 变量传递,具体视觉效果仍由 CSS 控制。
card.addEventListener("pointermove", (event) => {
const rect = card.getBoundingClientRect();
const px = (event.clientX - rect.left) / rect.width - 0.5;
const py = (event.clientY - rect.top) / rect.height - 0.5;
card.style.setProperty("--tilt-y", `${px * 5}deg`);
card.style.setProperty("--tilt-x", `${py * -5}deg`);
});
card.addEventListener("pointerleave", () => {
card.style.setProperty("--tilt-y", "0deg");
card.style.setProperty("--tilt-x", "0deg");
});
});
document.querySelectorAll(".magnetic").forEach((item) => {
// 品牌 logo 不做磁吸,避免导航视觉跳动。
if (item.classList.contains("brand") || item.querySelector(".brand-logo")) return;
item.addEventListener("pointermove", (event) => {
const rect = item.getBoundingClientRect();
const x = event.clientX - rect.left - rect.width / 2;
const y = event.clientY - rect.top - rect.height / 2;
item.style.transform = `translate(${x * 0.08}px, ${y * 0.08}px)`;
});
item.addEventListener("pointerleave", () => {
item.style.transform = "";
});
});
})();