睿能科技
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

101 lines
3.3 KiB

$(function () {
AOS.init({
duration: 800,
});
const lenis = new Lenis();
gsap.registerPlugin(ScrollTrigger, SplitText);
// Lenis 与 GSAP ScrollTrigger 同步(保证触发点准确)
lenis.on('scroll', ScrollTrigger.update);
gsap.ticker.add((time) => {
lenis.raf(time * 1000);
});
gsap.ticker.lagSmoothing(0);
const $header = $('.site-header');
// 任意带 data-header-dark 的区块:滚入「顶贴视口上沿」区间时顶栏加 .dark(与具体 class 解耦)
const $targets = $('[data-header-dark]');
const active = new Set();
const setHeaderDark = () => {
$header.toggleClass('dark', active.size > 0);
};
$targets.each(function () {
const el = this;
ScrollTrigger.create({
trigger: el,
start: 'top top',
end: 'bottom top',
onEnter: () => {
active.add(el);
setHeaderDark();
},
onEnterBack: () => {
active.add(el);
setHeaderDark();
},
onLeave: () => {
active.delete(el);
setHeaderDark();
},
onLeaveBack: () => {
active.delete(el);
setHeaderDark();
},
});
});
ScrollTrigger.refresh();
/* 在768px以下时,navbar-collapse增加class glass-card*/
// 初始化
if ($(window).width() <= 768) {
$('#navbarCollapse').addClass('glass-card');
}
$(window).on('resize', function () {
if ($(window).width() <= 768) {
$('#navbarCollapse').addClass('glass-card');
} else {
$('#navbarCollapse').removeClass('glass-card');
}
});
// mask:遮罩渐显(CSS)+ SplitText 按行从上向下错开出现
const maskEl = document.querySelector('.mask');
const maskContentEl = document.querySelector('.mask-content');
const $maskToggles = $('.site-header__icon-btn.toggle, .mask-header__icon-btn.toggle');
function setMaskOpenUi(isOpen) {
$('body').toggleClass('is-mask-open', isOpen);
$maskToggles.attr('aria-expanded', isOpen ? 'true' : 'false');
$maskToggles.attr('aria-label', isOpen ? '关闭导航菜单' : '打开导航菜单');
}
$('.site-header__icon-btn.toggle').on('click', function () {
if (!maskEl || !maskContentEl) return;
const nodes = maskContentEl.querySelectorAll('h4, a');
$(maskEl).addClass('show mask--nav-motion');
$('body').css('overflow', 'hidden');
setMaskOpenUi(true);
gsap.killTweensOf(nodes);
gsap.from(nodes, {
opacity: 0,
stagger: 0.02,
delay: 0.35,
overwrite: 'auto',
onComplete: function () {
maskEl.classList.remove('mask--nav-motion');
gsap.set(nodes, { clearProps: 'opacity' });
},
});
});
$('.mask-header__icon-btn.toggle').on('click', function () {
if (!maskEl || !maskContentEl) return;
gsap.killTweensOf(maskContentEl.querySelectorAll('h4, a'));
$(maskEl).removeClass('show mask--nav-motion');
$('body').css('overflow', 'auto');
setMaskOpenUi(false);
});
});