import "./common.js"; //#region js/solution.js function setActiveNav() { const pageNav = document.querySelector("[data-nav]")?.getAttribute("data-nav"); if (!pageNav) return; document.querySelectorAll(".site-header__nav a").forEach((link) => { const active = link.textContent.trim().startsWith(pageNav); link.classList.toggle("is-active", active); }); } function initCoreSwiper() { const root = document.querySelector(".sl-core"); const el = root?.querySelector(".sl-core__swiper"); if (!root || !el || !window.Swiper) return; new window.Swiper(el, { slidesPerView: 3, spaceBetween: 40, speed: 600, navigation: { prevEl: root.querySelector(".sl-core__head .s-arrows__prev"), nextEl: root.querySelector(".sl-core__head .s-arrows__next") }, breakpoints: { 0: { slidesPerView: 1.3, spaceBetween: 20, navigation: { prevEl: root.querySelector(".sl-core__arrows-mobile .s-arrows__prev"), nextEl: root.querySelector(".sl-core__arrows-mobile .s-arrows__next") } }, 768: { slidesPerView: 2, spaceBetween: 24 }, 1200: { slidesPerView: 3, spaceBetween: 40 } } }); } /** 经典案例:文案 fade + 图片 creative,双 Swiper 同步 */ function initCasesSwipers() { const root = document.querySelector(".sl-cases"); const contentEl = root?.querySelector(".sl-cases__content-swiper"); const mediaEl = root?.querySelector(".sl-cases__media-swiper"); if (!root || !contentEl || !mediaEl || !window.Swiper) return; const currentEl = root.querySelector(".sl-cases__pager-current"); const totalEl = root.querySelector(".sl-cases__pager-total"); const prevBtn = root.querySelector(".s-arrows__prev"); const nextBtn = root.querySelector(".s-arrows__next"); const getOriginalCount = (swiper) => { const slides = [...swiper.slides]; return slides.filter((s) => !s.classList.contains("swiper-slide-duplicate")).length || slides.length; }; const syncPager = (swiper) => { if (currentEl) currentEl.textContent = String(swiper.realIndex + 1); if (totalEl) totalEl.textContent = String(getOriginalCount(swiper)); }; const contentSwiper = new window.Swiper(contentEl, { effect: "fade", fadeEffect: { crossFade: true }, loop: true, speed: 500, allowTouchMove: false, observer: true, observeParents: true, watchOverflow: true }); new window.Swiper(mediaEl, { grabCursor: true, effect: "creative", creativeEffect: { prev: { shadow: true, translate: [ 0, 0, -400 ] }, next: { translate: [ "100%", 0, 0 ] } }, loop: true, speed: 600, navigation: { prevEl: prevBtn, nextEl: nextBtn }, on: { init(swiper) { syncPager(swiper); }, slideChange(swiper) { syncPager(swiper); if (contentSwiper.realIndex !== swiper.realIndex) contentSwiper.slideToLoop(swiper.realIndex, contentSwiper.params.speed, false); } } }); } $(function() { setActiveNav(); initCoreSwiper(); initCasesSwipers(); }); //#endregion