文件还在测试中
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
/* 酷冰甲降温服 · 前台交互 */
|
||||
(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 = ''; });
|
||||
});
|
||||
})();
|
||||
Reference in New Issue
Block a user