Files
coolcoth.com/public/assets/js/main.js
T
2026-08-08 15:53:53 +08:00

56 lines
1.9 KiB
JavaScript

/* 酷冰甲降温服 · 前台交互 */
(function () {
'use strict';
// 明暗切换
var root = document.documentElement;
var toggle = document.getElementById('themeToggle');
if (toggle) {
toggle.addEventListener('click', function () {
var cur = root.getAttribute('data-theme') === 'dark' ? 'light' : 'dark';
root.setAttribute('data-theme', cur);
try { localStorage.setItem('site_theme', cur); } catch (e) {}
});
}
// 滚动时 header 阴影
var header = document.getElementById('siteHeader');
function onScroll() {
if (header) header.classList.toggle('scrolled', window.scrollY > 10);
}
window.addEventListener('scroll', onScroll, { passive: true });
onScroll();
// 移动端菜单
var burger = document.getElementById('navBurger');
var links = document.getElementById('navLinks');
if (burger && links) {
burger.addEventListener('click', function () { links.classList.toggle('open'); });
links.addEventListener('click', function (e) {
if (e.target.tagName === 'A') links.classList.remove('open');
});
}
// 滚动揭示
var io = new IntersectionObserver(function (entries) {
entries.forEach(function (en) {
if (en.isIntersecting) { en.target.classList.add('in'); io.unobserve(en.target); }
});
}, { threshold: 0.12 });
document.querySelectorAll('.reveal').forEach(function (el, i) {
el.style.transitionDelay = (i % 6) * 60 + 'ms';
io.observe(el);
});
// 磁性按钮
document.querySelectorAll('.magnetic').forEach(function (el) {
el.addEventListener('mousemove', function (e) {
var r = el.getBoundingClientRect();
var x = e.clientX - r.left - r.width / 2;
var y = e.clientY - r.top - r.height / 2;
el.style.transform = 'translate(' + x * 0.18 + 'px,' + y * 0.28 + 'px)';
});
el.addEventListener('mouseleave', function () { el.style.transform = ''; });
});
})();