睿能科技
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.
 
 
 
 
 
 

119 lines
3.2 KiB

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;
const slideCount = el.querySelectorAll(".swiper-wrapper > .swiper-slide").length;
// 一屏展示 3 条,不超过 3 条时隐藏切换按钮
if (slideCount <= 3) {
root.querySelectorAll(".sl-core__head .s-arrows").forEach((node) => {
node.style.display = "none";
});
}
new window.Swiper(el, {
slidesPerView: 3,
spaceBetween: 40,
speed: 600,
watchOverflow: true,
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