2025-02-19 03:52:29 +00:00
|
|
|
<script setup>
|
2025-02-26 07:30:41 +00:00
|
|
|
import { NCarousel, NDivider, NMarquee, NPopselect } from "naive-ui";
|
2025-02-22 11:36:52 +00:00
|
|
|
import { onUnmounted, ref, watch, onMounted, computed } from "vue";
|
2025-02-22 09:37:27 +00:00
|
|
|
import gsap from "gsap";
|
|
|
|
import { ScrollTrigger } from "gsap/ScrollTrigger";
|
|
|
|
import { useHome } from "@/store/home/index.js";
|
|
|
|
import { useTransitionComposable } from "@/composables/transition-composable";
|
2025-02-21 03:27:50 +00:00
|
|
|
import { useRouter } from "vue-router";
|
2025-02-26 07:30:41 +00:00
|
|
|
import { useLanguage } from "@/utils/changeLanguage.js";
|
2025-02-19 03:52:29 +00:00
|
|
|
|
2025-02-21 03:27:50 +00:00
|
|
|
const router = useRouter();
|
2025-02-19 03:52:29 +00:00
|
|
|
const { transitionState } = useTransitionComposable();
|
|
|
|
const main = ref();
|
|
|
|
const secondImage = ref(null);
|
|
|
|
let scrollTween;
|
|
|
|
let ctx;
|
|
|
|
const { currentTab } = useHome();
|
2025-02-22 09:37:27 +00:00
|
|
|
let isScrolling = false; // 添加滚动状态标记
|
|
|
|
const scrollThreshold = 50; // 添加滚动阈值
|
|
|
|
let lastScrollTime = 0; // 添加最后滚动时间记录
|
2025-02-20 06:27:48 +00:00
|
|
|
const scrollDownVisible = ref(true);
|
2025-02-26 07:30:41 +00:00
|
|
|
const {
|
|
|
|
languageOptions,
|
|
|
|
currentLanguage,
|
|
|
|
currentLanguageLabel,
|
|
|
|
changeLanguage,
|
|
|
|
initLanguage,
|
|
|
|
currentLang,
|
|
|
|
currentBannerImages,
|
|
|
|
t
|
|
|
|
} = useLanguage();
|
2025-02-19 03:52:29 +00:00
|
|
|
|
|
|
|
const handleTabClick = (tab) => {
|
|
|
|
currentTab.value = tab;
|
2025-02-22 09:37:27 +00:00
|
|
|
router.push("/" + tab);
|
|
|
|
};
|
2025-02-19 03:52:29 +00:00
|
|
|
|
|
|
|
const goToSection = (i) => {
|
2025-02-19 11:03:37 +00:00
|
|
|
if (scrollTween) {
|
|
|
|
scrollTween.kill();
|
|
|
|
}
|
|
|
|
|
|
|
|
// 防止频繁触发
|
|
|
|
const now = Date.now();
|
2025-02-22 09:37:27 +00:00
|
|
|
if (now - lastScrollTime < 500) return; // 500ms 内不重复触发
|
2025-02-19 11:03:37 +00:00
|
|
|
lastScrollTime = now;
|
|
|
|
|
|
|
|
isScrolling = true;
|
|
|
|
scrollTween = gsap.to(window, {
|
|
|
|
scrollTo: { y: i * window.innerHeight, autoKill: false },
|
2025-02-22 09:37:27 +00:00
|
|
|
duration: 0.8, // 增加动画时间使其更平滑
|
2025-02-19 11:03:37 +00:00
|
|
|
ease: "power2.inOut",
|
|
|
|
onComplete: () => {
|
|
|
|
scrollTween = null;
|
|
|
|
isScrolling = false;
|
|
|
|
},
|
|
|
|
overwrite: true,
|
2025-02-19 03:52:29 +00:00
|
|
|
});
|
|
|
|
};
|
|
|
|
|
2025-02-20 06:27:48 +00:00
|
|
|
// 修改handleWheel函数
|
2025-02-19 11:03:37 +00:00
|
|
|
const handleWheel = (e) => {
|
|
|
|
if (isScrolling) {
|
|
|
|
e.preventDefault();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
const delta = e.deltaY;
|
|
|
|
const currentSection = Math.round(window.scrollY / window.innerHeight);
|
2025-02-22 09:37:27 +00:00
|
|
|
const lastPanel = document.querySelector(".panel:last-child");
|
2025-02-20 06:27:48 +00:00
|
|
|
const isInLastPanel = currentSection === 3;
|
2025-02-19 11:03:37 +00:00
|
|
|
|
2025-02-20 06:27:48 +00:00
|
|
|
// 在最后一个panel时允许自然滚动
|
2025-02-23 06:47:00 +00:00
|
|
|
if (isInLastPanel) {
|
|
|
|
// 只在向上滚动时处理
|
|
|
|
if (delta < 0 && lastPanel.scrollTop === 0) {
|
2025-02-20 06:27:48 +00:00
|
|
|
if (Math.abs(delta) > scrollThreshold) {
|
2025-02-23 06:47:00 +00:00
|
|
|
goToSection(currentSection - 1);
|
2025-02-20 06:27:48 +00:00
|
|
|
}
|
2025-02-23 06:47:00 +00:00
|
|
|
e.preventDefault();
|
2025-02-20 06:27:48 +00:00
|
|
|
}
|
|
|
|
return; // 其他情况允许自然滚动
|
|
|
|
}
|
|
|
|
|
|
|
|
// 非最后一个panel的处理保持不变
|
2025-02-19 11:03:37 +00:00
|
|
|
if (Math.abs(delta) > scrollThreshold) {
|
2025-02-20 06:27:48 +00:00
|
|
|
if (delta > 0 && currentSection < 3) {
|
2025-02-19 11:03:37 +00:00
|
|
|
goToSection(currentSection + 1);
|
2025-02-20 06:27:48 +00:00
|
|
|
} else if (delta < 0 && currentSection > 0) {
|
2025-02-19 11:03:37 +00:00
|
|
|
goToSection(currentSection - 1);
|
|
|
|
}
|
2025-02-23 06:47:00 +00:00
|
|
|
e.preventDefault();
|
2025-02-19 11:03:37 +00:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// 监听滚轮事件
|
|
|
|
onMounted(() => {
|
2025-02-21 05:58:30 +00:00
|
|
|
window.scrollTo(0, 0);
|
2025-02-22 09:37:27 +00:00
|
|
|
window.addEventListener("wheel", handleWheel, { passive: false });
|
2025-02-26 07:30:41 +00:00
|
|
|
initLanguage();
|
2025-02-19 11:03:37 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
onUnmounted(() => {
|
2025-02-22 09:37:27 +00:00
|
|
|
window.removeEventListener("wheel", handleWheel);
|
2025-02-19 11:03:37 +00:00
|
|
|
ctx?.revert();
|
|
|
|
ScrollTrigger.killAll();
|
|
|
|
});
|
|
|
|
|
2025-02-19 03:52:29 +00:00
|
|
|
watch(
|
|
|
|
[() => transitionState.transitionComplete, main],
|
|
|
|
(newValue) => {
|
|
|
|
if (newValue && main.value) {
|
|
|
|
ctx = gsap.context((self) => {
|
2025-02-22 09:37:27 +00:00
|
|
|
const panels = self.selector(".panel");
|
2025-02-19 11:03:37 +00:00
|
|
|
|
|
|
|
// 为每个面板创建滚动触发器
|
|
|
|
panels.forEach((panel, i) => {
|
2025-02-23 06:47:00 +00:00
|
|
|
// 跳过第四个面板
|
|
|
|
if (i === 3) return;
|
2025-02-26 07:30:41 +00:00
|
|
|
|
2025-02-19 11:03:37 +00:00
|
|
|
ScrollTrigger.create({
|
|
|
|
trigger: panel,
|
2025-02-22 09:37:27 +00:00
|
|
|
start: "top center",
|
|
|
|
end: "bottom center",
|
2025-02-19 11:03:37 +00:00
|
|
|
onToggle: (self) => {
|
|
|
|
if (self.isActive && !isScrolling) {
|
|
|
|
goToSection(i);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
preventOverlaps: true,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2025-02-19 03:52:29 +00:00
|
|
|
// 移除之前的渐入动画代码
|
|
|
|
panels.forEach((panel, i) => {
|
2025-02-23 06:47:00 +00:00
|
|
|
// 跳过第四个面板
|
|
|
|
if (i === 3) return;
|
2025-02-26 07:30:41 +00:00
|
|
|
|
2025-02-19 03:52:29 +00:00
|
|
|
// 背景视差
|
2025-02-22 09:37:27 +00:00
|
|
|
const bg = panel.querySelector(".parallax-bg");
|
2025-02-19 03:52:29 +00:00
|
|
|
if (bg) {
|
|
|
|
gsap.to(bg, {
|
|
|
|
yPercent: 30,
|
|
|
|
ease: "none",
|
|
|
|
scrollTrigger: {
|
|
|
|
trigger: panel,
|
|
|
|
start: "top bottom",
|
|
|
|
end: "bottom top",
|
2025-02-22 09:37:27 +00:00
|
|
|
scrub: true,
|
|
|
|
},
|
2025-02-19 03:52:29 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// 内容视差
|
2025-02-22 09:37:27 +00:00
|
|
|
const content = panel.querySelector(".content");
|
2025-02-19 03:52:29 +00:00
|
|
|
if (content) {
|
|
|
|
gsap.from(content, {
|
|
|
|
yPercent: 50,
|
|
|
|
opacity: 0,
|
|
|
|
scrollTrigger: {
|
|
|
|
trigger: panel,
|
|
|
|
start: "top center",
|
|
|
|
end: "center center",
|
2025-02-22 09:37:27 +00:00
|
|
|
scrub: true,
|
|
|
|
},
|
2025-02-19 03:52:29 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// 修改第二个面板的动画配置
|
|
|
|
ScrollTrigger.create({
|
|
|
|
trigger: panels[1],
|
2025-02-22 09:37:27 +00:00
|
|
|
start: "top 60%", // 调整为更晚的触发时机
|
|
|
|
end: "bottom 40%", // 调整离开时机
|
|
|
|
onEnter: () => {
|
|
|
|
// 进入第二幕时
|
2025-02-19 03:52:29 +00:00
|
|
|
gsap.to(secondImage.value, {
|
|
|
|
opacity: 1,
|
|
|
|
y: 0,
|
|
|
|
duration: 1.2,
|
2025-02-22 09:37:27 +00:00
|
|
|
ease: "power2.out",
|
2025-02-19 03:52:29 +00:00
|
|
|
});
|
|
|
|
},
|
2025-02-22 09:37:27 +00:00
|
|
|
onLeave: () => {
|
|
|
|
// 离开第二幕时(向下滚动)
|
2025-02-19 03:52:29 +00:00
|
|
|
gsap.to(secondImage.value, {
|
|
|
|
opacity: 0,
|
|
|
|
y: -50,
|
2025-02-22 09:37:27 +00:00
|
|
|
duration: 0.5, // 加快渐出速度
|
|
|
|
ease: "power1.in", // 使用更快的缓动函数
|
2025-02-19 03:52:29 +00:00
|
|
|
});
|
|
|
|
},
|
2025-02-22 09:37:27 +00:00
|
|
|
onEnterBack: () => {
|
|
|
|
// 重新进入第二幕时(向上滚动)
|
2025-02-19 03:52:29 +00:00
|
|
|
gsap.to(secondImage.value, {
|
|
|
|
opacity: 1,
|
|
|
|
y: 0,
|
|
|
|
duration: 1.2,
|
2025-02-22 09:37:27 +00:00
|
|
|
ease: "power2.out",
|
2025-02-19 03:52:29 +00:00
|
|
|
});
|
|
|
|
},
|
2025-02-22 09:37:27 +00:00
|
|
|
onLeaveBack: () => {
|
|
|
|
// 返回第一幕时(向上滚动)
|
2025-02-19 03:52:29 +00:00
|
|
|
gsap.to(secondImage.value, {
|
|
|
|
opacity: 0,
|
|
|
|
y: 50,
|
2025-02-22 09:37:27 +00:00
|
|
|
duration: 0.5, // 加快渐出速度
|
|
|
|
ease: "power1.in", // 使用更快的缓动函数
|
2025-02-19 03:52:29 +00:00
|
|
|
});
|
2025-02-22 09:37:27 +00:00
|
|
|
},
|
2025-02-19 03:52:29 +00:00
|
|
|
});
|
2025-02-20 06:27:48 +00:00
|
|
|
|
|
|
|
// 修改第三幕的ScrollTrigger配置
|
|
|
|
ScrollTrigger.create({
|
|
|
|
trigger: panels[2],
|
|
|
|
start: "top 60%", // 提前触发
|
|
|
|
end: "bottom center",
|
|
|
|
onEnter: () => {
|
|
|
|
// 初始状态设置
|
|
|
|
gsap.set(".content3", {
|
2025-02-22 09:37:27 +00:00
|
|
|
opacity: 1, // 容器始终保持可见
|
|
|
|
y: 0,
|
2025-02-20 06:27:48 +00:00
|
|
|
});
|
|
|
|
|
2025-02-22 09:37:27 +00:00
|
|
|
gsap.set(
|
|
|
|
[
|
|
|
|
".content3 > div:nth-child(1)",
|
|
|
|
".content3 > div:nth-child(2)",
|
|
|
|
".content3 > div:nth-child(3)",
|
|
|
|
".content3 > .n-marquee",
|
|
|
|
],
|
|
|
|
{
|
|
|
|
opacity: 0,
|
|
|
|
y: 50,
|
|
|
|
}
|
|
|
|
);
|
2025-02-20 06:27:48 +00:00
|
|
|
|
|
|
|
const tl = gsap.timeline({
|
|
|
|
defaults: {
|
|
|
|
duration: 0.8,
|
2025-02-22 09:37:27 +00:00
|
|
|
ease: "power2.out",
|
|
|
|
},
|
2025-02-20 06:27:48 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
tl.to(".content3 > div:nth-child(1)", {
|
|
|
|
opacity: 1,
|
|
|
|
y: 0,
|
|
|
|
})
|
2025-02-22 09:37:27 +00:00
|
|
|
.to(
|
|
|
|
".content3 > div:nth-child(2)",
|
|
|
|
{
|
|
|
|
opacity: 1,
|
|
|
|
y: 0,
|
|
|
|
},
|
|
|
|
"-=0.6"
|
|
|
|
)
|
|
|
|
.to(
|
|
|
|
".content3 > div:nth-child(3)",
|
|
|
|
{
|
|
|
|
opacity: 1,
|
|
|
|
y: 0,
|
|
|
|
},
|
|
|
|
"-=0.6"
|
|
|
|
)
|
|
|
|
.to(
|
|
|
|
".content3 > .n-marquee",
|
|
|
|
{
|
|
|
|
opacity: 1,
|
|
|
|
y: 0,
|
|
|
|
onStart: () => {
|
|
|
|
const marquee = document.querySelector(
|
|
|
|
".content3 > .n-marquee"
|
|
|
|
);
|
|
|
|
if (marquee) {
|
|
|
|
marquee.style.visibility = "visible";
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
"-=0.6"
|
|
|
|
);
|
2025-02-20 06:27:48 +00:00
|
|
|
},
|
|
|
|
onLeave: () => {
|
|
|
|
const tl = gsap.timeline({
|
|
|
|
defaults: {
|
|
|
|
duration: 0.3,
|
2025-02-22 09:37:27 +00:00
|
|
|
ease: "power2.in",
|
|
|
|
},
|
2025-02-20 06:27:48 +00:00
|
|
|
});
|
|
|
|
|
2025-02-22 09:37:27 +00:00
|
|
|
tl.to(
|
|
|
|
[
|
|
|
|
".content3 > .n-marquee",
|
|
|
|
".content3 > div:nth-child(3)",
|
|
|
|
".content3 > div:nth-child(2)",
|
|
|
|
".content3 > div:nth-child(1)",
|
|
|
|
],
|
|
|
|
{
|
|
|
|
opacity: 0,
|
|
|
|
y: -30,
|
|
|
|
stagger: 0.1,
|
|
|
|
}
|
|
|
|
);
|
2025-02-20 06:27:48 +00:00
|
|
|
},
|
|
|
|
onEnterBack: () => {
|
|
|
|
gsap.set(".content3", {
|
|
|
|
opacity: 1,
|
2025-02-22 09:37:27 +00:00
|
|
|
y: 0,
|
2025-02-20 06:27:48 +00:00
|
|
|
});
|
|
|
|
|
2025-02-22 09:37:27 +00:00
|
|
|
gsap.set(
|
|
|
|
[
|
|
|
|
".content3 > div:nth-child(1)",
|
|
|
|
".content3 > div:nth-child(2)",
|
|
|
|
".content3 > div:nth-child(3)",
|
|
|
|
".content3 > .n-marquee",
|
|
|
|
],
|
|
|
|
{
|
|
|
|
opacity: 0,
|
|
|
|
y: -50,
|
|
|
|
}
|
|
|
|
);
|
2025-02-20 06:27:48 +00:00
|
|
|
|
|
|
|
const tl = gsap.timeline({
|
|
|
|
defaults: {
|
|
|
|
duration: 0.8,
|
2025-02-22 09:37:27 +00:00
|
|
|
ease: "power2.out",
|
|
|
|
},
|
2025-02-20 06:27:48 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
tl.to(".content3 > div:nth-child(1)", {
|
|
|
|
opacity: 1,
|
|
|
|
y: 0,
|
|
|
|
})
|
2025-02-22 09:37:27 +00:00
|
|
|
.to(
|
|
|
|
".content3 > div:nth-child(2)",
|
|
|
|
{
|
|
|
|
opacity: 1,
|
|
|
|
y: 0,
|
|
|
|
},
|
|
|
|
"-=0.6"
|
|
|
|
)
|
|
|
|
.to(
|
|
|
|
".content3 > div:nth-child(3)",
|
|
|
|
{
|
|
|
|
opacity: 1,
|
|
|
|
y: 0,
|
|
|
|
},
|
|
|
|
"-=0.6"
|
|
|
|
)
|
|
|
|
.to(
|
|
|
|
".content3 > .n-marquee",
|
|
|
|
{
|
|
|
|
opacity: 1,
|
|
|
|
y: 0,
|
|
|
|
},
|
|
|
|
"-=0.6"
|
|
|
|
);
|
2025-02-20 06:27:48 +00:00
|
|
|
},
|
|
|
|
onLeaveBack: () => {
|
|
|
|
const tl = gsap.timeline({
|
|
|
|
defaults: {
|
|
|
|
duration: 0.3,
|
2025-02-22 09:37:27 +00:00
|
|
|
ease: "power2.in",
|
|
|
|
},
|
2025-02-20 06:27:48 +00:00
|
|
|
});
|
|
|
|
|
2025-02-22 09:37:27 +00:00
|
|
|
tl.to(
|
|
|
|
[
|
|
|
|
".content3 > .n-marquee",
|
|
|
|
".content3 > div:nth-child(3)",
|
|
|
|
".content3 > div:nth-child(2)",
|
|
|
|
".content3 > div:nth-child(1)",
|
|
|
|
],
|
|
|
|
{
|
|
|
|
opacity: 0,
|
|
|
|
y: 30,
|
|
|
|
stagger: 0.1,
|
|
|
|
}
|
|
|
|
);
|
|
|
|
},
|
2025-02-20 06:27:48 +00:00
|
|
|
});
|
|
|
|
|
2025-02-23 06:47:00 +00:00
|
|
|
// 第四幕不需要动画,直接设置初始状态
|
|
|
|
gsap.set(".content4", {
|
|
|
|
opacity: 1,
|
|
|
|
y: 0,
|
|
|
|
});
|
|
|
|
gsap.set([
|
|
|
|
".content4 > div:nth-child(1)",
|
|
|
|
".content4 > div:nth-child(2)",
|
|
|
|
".content4 > div:nth-child(3)",
|
|
|
|
".content4 .container .card"
|
|
|
|
], {
|
|
|
|
opacity: 1,
|
|
|
|
y: 0,
|
2025-02-20 06:27:48 +00:00
|
|
|
});
|
2025-02-19 03:52:29 +00:00
|
|
|
}, main.value);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{ immediate: true }
|
|
|
|
);
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
2025-02-26 07:30:41 +00:00
|
|
|
<header className="header">
|
2025-02-22 09:37:27 +00:00
|
|
|
<div class="logo">
|
|
|
|
<img src="@/assets/image/logo.png" alt="logo" />
|
|
|
|
</div>
|
|
|
|
<div class="tabs">
|
2025-02-26 07:30:41 +00:00
|
|
|
<div class="tab-item" :class="{
|
|
|
|
active: currentTab === 'home',
|
|
|
|
}" @click="handleTabClick('home')">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.nav.home") }}
|
2025-02-21 05:58:30 +00:00
|
|
|
</div>
|
2025-02-26 07:30:41 +00:00
|
|
|
<div class="tab-item" :class="{
|
|
|
|
active: currentTab === 'companyprofil',
|
|
|
|
}" @click="handleTabClick('companyprofil')">
|
2025-02-22 11:24:39 +00:00
|
|
|
{{ t("home.nav.company") }}
|
|
|
|
</div>
|
|
|
|
<div class="tab-item" :class="{
|
|
|
|
active:
|
|
|
|
currentTab === 'businessintroduction',
|
|
|
|
}" @click="
|
|
|
|
handleTabClick('businessintroduction')
|
|
|
|
">
|
|
|
|
{{ t("home.nav.businessintroduction") }}
|
2025-02-22 09:37:27 +00:00
|
|
|
</div>
|
2025-02-26 07:30:41 +00:00
|
|
|
<div class="tab-item">
|
2025-02-26 08:30:07 +00:00
|
|
|
|
2025-02-26 07:30:41 +00:00
|
|
|
<n-popselect v-model:value="currentLanguage" :options="languageOptions" trigger="click"
|
|
|
|
@update:value="changeLanguage">
|
|
|
|
{{ currentLanguageLabel }}
|
|
|
|
</n-popselect>
|
|
|
|
</div>
|
2025-02-22 09:37:27 +00:00
|
|
|
</div>
|
|
|
|
</header>
|
2025-02-19 03:52:29 +00:00
|
|
|
<main ref="main">
|
2025-02-22 09:37:27 +00:00
|
|
|
<div class="scroll-down" :class="{ hide: !scrollDownVisible }">
|
|
|
|
{{ t("home.scroll.tip") }}
|
|
|
|
</div>
|
2025-02-19 03:52:29 +00:00
|
|
|
<section className="panel first-panel">
|
2025-02-26 07:30:41 +00:00
|
|
|
<n-carousel autoplay :interval="5000" class="no-hover">
|
2025-02-22 11:47:25 +00:00
|
|
|
<img class="carousel-img" :src="currentBannerImages[0]" />
|
2025-02-22 11:36:52 +00:00
|
|
|
<img class="carousel-img" :src="currentBannerImages[1]" />
|
|
|
|
<img class="carousel-img" :src="currentBannerImages[2]" />
|
|
|
|
<img class="carousel-img" :src="currentBannerImages[3]" />
|
2025-02-19 03:52:29 +00:00
|
|
|
</n-carousel>
|
|
|
|
</section>
|
|
|
|
|
2025-02-22 09:37:27 +00:00
|
|
|
<section className="panel" style="background-color: rgba(248, 249, 255, 1)">
|
2025-02-19 11:03:37 +00:00
|
|
|
<n-divider class="divider1" vertical />
|
|
|
|
<div class="divider2" style=""></div>
|
|
|
|
<div class="divider3" style=""></div>
|
|
|
|
<div class="divider4" style=""></div>
|
|
|
|
<n-divider class="divider5" vertical />
|
2025-02-23 06:57:44 +00:00
|
|
|
<div class="parallax-bg top-[-70px]">
|
2025-02-26 07:30:41 +00:00
|
|
|
<img ref="secondImage" class="second-image" src="@/assets/image/head.png" />
|
2025-02-19 03:52:29 +00:00
|
|
|
</div>
|
|
|
|
<div class="content">
|
2025-02-26 07:30:41 +00:00
|
|
|
<div class="text-[#10253E] text-[54px] font-bold leading-[80px]">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section2.title1") }}
|
|
|
|
</div>
|
2025-02-24 02:47:53 +00:00
|
|
|
<div class="text-[#10253E] text-[54px] font-bold leading-[80px]">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section2.title2") }}
|
|
|
|
</div>
|
2025-02-19 03:52:29 +00:00
|
|
|
</div>
|
|
|
|
</section>
|
|
|
|
|
2025-02-22 09:37:27 +00:00
|
|
|
<section className="panel" style="background-color: #fff">
|
2025-02-20 06:27:48 +00:00
|
|
|
<n-divider class="divider1" vertical />
|
|
|
|
<div class="divider2" style=""></div>
|
|
|
|
<div class="divider3" style=""></div>
|
|
|
|
<div class="divider4" style=""></div>
|
|
|
|
<n-divider class="divider5" vertical />
|
2025-02-22 09:37:27 +00:00
|
|
|
<div class="parallax-bg" style="margin-top: 70px"></div>
|
2025-02-20 06:27:48 +00:00
|
|
|
<div class="content3 mt-[140px]">
|
2025-02-22 09:37:27 +00:00
|
|
|
<div class="text-[#8B59F7] text-[16px]">
|
|
|
|
{{ t("home.section3.label") }}
|
2025-02-19 11:03:37 +00:00
|
|
|
</div>
|
2025-02-24 02:47:53 +00:00
|
|
|
<div class="text-[#10253E] text-[40px] mt-[17px] font-bold">FiEE</div>
|
2025-02-22 09:37:27 +00:00
|
|
|
<div class="text-[#455363] text-[16px] mt-[31px]">
|
|
|
|
{{ t("home.section3.desc") }}
|
2025-02-19 11:03:37 +00:00
|
|
|
</div>
|
|
|
|
<n-marquee auto-fill>
|
2025-02-22 09:37:27 +00:00
|
|
|
<div style="display: flex">
|
|
|
|
<div class="text-[#455363] text-[16px] mt-[31px] mr-[30px]">
|
2025-02-26 07:30:41 +00:00
|
|
|
<img class="w-[180px] h-[180px]" src="@/assets/image/jj1.png" alt="logo" />
|
2025-02-20 06:27:48 +00:00
|
|
|
<div class="line"></div>
|
2025-02-24 02:47:53 +00:00
|
|
|
<div class="text-[#10253E] text-[20px] max-w-[200px] break-words font-bold">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section3.features.data.title") }}
|
|
|
|
</div>
|
2025-02-26 07:30:41 +00:00
|
|
|
<div class="text-[#455363] text-[16px] mt-[14px] max-w-[200px] break-words">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section3.features.data.desc") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
2025-02-22 09:37:27 +00:00
|
|
|
<div class="text-[#455363] text-[16px] mt-[31px] mr-[30px]">
|
2025-02-26 07:30:41 +00:00
|
|
|
<img class="w-[180px] h-[180px]" src="@/assets/image/jj2.png" alt="logo" />
|
2025-02-20 06:27:48 +00:00
|
|
|
<div class="line"></div>
|
2025-02-24 02:47:53 +00:00
|
|
|
<div class="text-[#10253E] text-[20px] max-w-[200px] break-words font-bold">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section3.features.ai.title") }}
|
|
|
|
</div>
|
2025-02-26 07:30:41 +00:00
|
|
|
<div class="text-[#455363] text-[16px] mt-[14px] max-w-[200px] break-words">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section3.features.ai.desc") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
2025-02-22 09:37:27 +00:00
|
|
|
<div class="text-[#455363] text-[16px] mt-[31px] mr-[30px]">
|
2025-02-26 07:30:41 +00:00
|
|
|
<img class="w-[180px] h-[180px]" src="@/assets/image/jj3.png" alt="logo" />
|
2025-02-20 06:27:48 +00:00
|
|
|
<div class="line"></div>
|
2025-02-24 02:47:53 +00:00
|
|
|
<div class="text-[#10253E] text-[20px] max-w-[200px] break-words font-bold">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section3.features.cloud.title") }}
|
|
|
|
</div>
|
2025-02-26 07:30:41 +00:00
|
|
|
<div class="text-[#455363] text-[16px] mt-[14px] max-w-[200px] break-words">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section3.features.cloud.desc") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
2025-02-22 09:37:27 +00:00
|
|
|
<div class="text-[#455363] text-[16px] mt-[31px] mr-[30px]">
|
2025-02-26 07:30:41 +00:00
|
|
|
<img class="w-[180px] h-[180px]" src="@/assets/image/jj4.png" alt="logo" />
|
2025-02-20 06:27:48 +00:00
|
|
|
<div class="line"></div>
|
2025-02-24 02:47:53 +00:00
|
|
|
<div class="text-[#10253E] text-[20px] max-w-[200px] break-words font-bold">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section3.features.cooperation.title") }}
|
|
|
|
</div>
|
2025-02-26 07:30:41 +00:00
|
|
|
<div class="text-[#455363] text-[16px] mt-[14px] max-w-[200px] break-words">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section3.features.cooperation.desc") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
2025-02-22 09:37:27 +00:00
|
|
|
<div class="text-[#455363] text-[16px] mt-[31px] mr-[30px]">
|
2025-02-26 07:30:41 +00:00
|
|
|
<img class="w-[180px] h-[180px]" src="@/assets/image/jj5.png" alt="logo" />
|
2025-02-22 09:37:27 +00:00
|
|
|
<div class="line"></div>
|
2025-02-24 02:47:53 +00:00
|
|
|
<div class="text-[#10253E] text-[20px] max-w-[200px] break-words font-bold">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section3.features.promotion.title") }}
|
|
|
|
</div>
|
2025-02-26 07:30:41 +00:00
|
|
|
<div class="text-[#455363] text-[16px] mt-[14px] max-w-[200px] break-words">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section3.features.promotion.desc") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2025-02-19 11:03:37 +00:00
|
|
|
</n-marquee>
|
2025-02-19 03:52:29 +00:00
|
|
|
</div>
|
|
|
|
</section>
|
|
|
|
|
2025-02-22 09:37:27 +00:00
|
|
|
<section className="panel" style="background-color: #f8f9ff">
|
|
|
|
<n-divider class="divider1" vertical style="height: 100%" />
|
|
|
|
<div class="divider2" style="height: 100%"></div>
|
|
|
|
<div class="divider3" style="height: 100%"></div>
|
|
|
|
<div class="divider4" style="height: 100%"></div>
|
|
|
|
<n-divider class="divider5" vertical style="height: 100%" />
|
2025-02-20 06:27:48 +00:00
|
|
|
<div class="parallax-bg"></div>
|
|
|
|
<div class="content4 mt-[103px]">
|
2025-02-22 09:37:27 +00:00
|
|
|
<div class="text-[#8B59F7] text-[16px]">
|
|
|
|
{{ t("home.section4.label") }}
|
|
|
|
</div>
|
2025-02-24 02:47:53 +00:00
|
|
|
<div class="text-[#10253E] text-[40px] mt-[17px] font-bold">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section4.title") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
</div>
|
2025-02-22 09:37:27 +00:00
|
|
|
<div class="text-[#455363] text-[16px] mt-[31px]">
|
|
|
|
{{ t("home.section4.desc") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
</div>
|
|
|
|
<div class="container">
|
|
|
|
<div class="mt-[100px]">
|
|
|
|
<div class="card">
|
|
|
|
<img src="@/assets/image/yw1.png" alt="Image 1" />
|
|
|
|
<div class="js-detail font-bold">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section4.cards1.title") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
<div class="text-[#455363] text-[16px] font-normal">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section4.cards1.desc") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="card">
|
|
|
|
<img src="@/assets/image/yw3.png" alt="Image 2" />
|
|
|
|
<div class="js-detail font-bold">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section4.cards2.title") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
<div class="text-[#455363] text-[16px] font-normal">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section4.cards2.desc") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="right">
|
|
|
|
<div class="card">
|
|
|
|
<img src="@/assets/image/yw2.png" alt="Image 3" />
|
|
|
|
<div class="js-detail font-bold">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section4.cards3.title") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
<div class="text-[#455363] text-[16px] font-normal">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section4.cards3.desc") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="card">
|
|
|
|
<img src="@/assets/image/yw4.png" alt="Image 4" />
|
|
|
|
<div class="js-detail font-bold">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section4.cards4.title") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
<div class="text-[#455363] text-[16px] font-normal">
|
2025-02-22 09:37:27 +00:00
|
|
|
{{ t("home.section4.cards4.desc") }}
|
2025-02-20 06:27:48 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2025-02-19 03:52:29 +00:00
|
|
|
</div>
|
|
|
|
</section>
|
|
|
|
</main>
|
2025-02-20 06:27:48 +00:00
|
|
|
<footer>
|
|
|
|
<div class="footer-content">
|
|
|
|
<img class="copyright" src="@/assets/image/cp.png" alt="logo" />
|
|
|
|
</div>
|
|
|
|
</footer>
|
2025-02-19 03:52:29 +00:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
2025-02-21 05:58:30 +00:00
|
|
|
.header {
|
|
|
|
width: 100%;
|
2025-02-24 01:17:48 +00:00
|
|
|
height: 65px;
|
2025-02-21 05:58:30 +00:00
|
|
|
display: flex;
|
|
|
|
justify-content: space-between;
|
|
|
|
align-items: flex-end;
|
|
|
|
position: fixed;
|
|
|
|
z-index: 10;
|
|
|
|
top: 0;
|
|
|
|
left: 0;
|
|
|
|
right: 0;
|
2025-02-21 08:56:14 +00:00
|
|
|
padding: 0 10rem;
|
2025-02-24 01:17:48 +00:00
|
|
|
padding-bottom: 10px;
|
2025-02-21 05:58:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
.logo {
|
|
|
|
img {
|
|
|
|
width: 108px;
|
|
|
|
height: 33px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.tabs {
|
|
|
|
display: flex;
|
|
|
|
gap: 32px;
|
|
|
|
margin-right: 32px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.tab-item {
|
|
|
|
font-size: 16px;
|
|
|
|
color: #000000;
|
|
|
|
cursor: pointer;
|
|
|
|
transition: color 0.3s ease;
|
|
|
|
padding: 4px 8px;
|
|
|
|
|
|
|
|
&.active {
|
2025-02-22 09:37:27 +00:00
|
|
|
color: #8b59fa;
|
2025-02-21 05:58:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
&:hover {
|
2025-02-22 09:37:27 +00:00
|
|
|
color: #8b59fa;
|
2025-02-21 05:58:30 +00:00
|
|
|
}
|
|
|
|
}
|
2025-02-26 07:30:41 +00:00
|
|
|
|
2025-02-20 06:27:48 +00:00
|
|
|
.scroll-down {
|
|
|
|
position: fixed;
|
|
|
|
bottom: 50px;
|
|
|
|
left: 50%;
|
|
|
|
transform: translateX(-50%);
|
2025-02-22 09:37:27 +00:00
|
|
|
color: #ffffff;
|
2025-02-20 06:27:48 +00:00
|
|
|
font-size: 16px;
|
|
|
|
font-weight: 600;
|
|
|
|
z-index: 999;
|
|
|
|
background: rgba(0, 0, 0, 0.1);
|
|
|
|
backdrop-filter: blur(20px);
|
|
|
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
|
|
border-radius: 22px;
|
|
|
|
padding: 10px 20px;
|
|
|
|
animation: float 2s ease-in-out infinite;
|
|
|
|
opacity: 1;
|
|
|
|
transition: opacity 0.3s ease;
|
2025-02-21 03:27:50 +00:00
|
|
|
min-width: 122px;
|
|
|
|
height: 38px;
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
align-items: center;
|
|
|
|
|
2025-02-20 06:27:48 +00:00
|
|
|
&.hide {
|
|
|
|
opacity: 0;
|
|
|
|
pointer-events: none;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@keyframes float {
|
2025-02-26 07:30:41 +00:00
|
|
|
|
2025-02-21 03:27:50 +00:00
|
|
|
0%,
|
|
|
|
100% {
|
2025-02-20 06:27:48 +00:00
|
|
|
transform: translate(-50%, 0);
|
|
|
|
}
|
2025-02-21 03:27:50 +00:00
|
|
|
|
2025-02-20 06:27:48 +00:00
|
|
|
50% {
|
|
|
|
transform: translate(-50%, -10px);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-02-21 03:27:50 +00:00
|
|
|
:deep .n-carousel__dot {
|
2025-02-22 09:37:27 +00:00
|
|
|
background-color: #dddddd !important;
|
2025-02-20 06:27:48 +00:00
|
|
|
}
|
2025-02-21 03:27:50 +00:00
|
|
|
|
|
|
|
:deep .n-carousel__dot--active {
|
2025-02-22 09:37:27 +00:00
|
|
|
background-color: #8b59f7 !important;
|
2025-02-20 06:27:48 +00:00
|
|
|
}
|
2025-02-21 03:27:50 +00:00
|
|
|
|
2025-02-19 11:03:37 +00:00
|
|
|
.divider1 {
|
|
|
|
position: absolute;
|
|
|
|
z-index: 3;
|
|
|
|
left: 477px;
|
|
|
|
width: 1px;
|
|
|
|
height: 100vw;
|
|
|
|
}
|
|
|
|
|
|
|
|
.divider2 {
|
|
|
|
position: absolute;
|
|
|
|
z-index: 3;
|
|
|
|
left: 715px;
|
|
|
|
width: 1px;
|
2025-02-20 06:27:48 +00:00
|
|
|
height: 100vw;
|
2025-02-22 09:37:27 +00:00
|
|
|
background-image: linear-gradient(to bottom, #e6eaee 50%, transparent 50%);
|
2025-02-19 11:03:37 +00:00
|
|
|
background-size: 1px 15px; // 第一个值是宽度,第二个值是虚线的总长度(实线+空白)
|
|
|
|
background-repeat: repeat-y;
|
|
|
|
}
|
|
|
|
|
|
|
|
.divider3 {
|
|
|
|
position: absolute;
|
|
|
|
z-index: 3;
|
|
|
|
left: 950px;
|
|
|
|
width: 1px;
|
2025-02-20 06:27:48 +00:00
|
|
|
height: 100vw;
|
2025-02-22 09:37:27 +00:00
|
|
|
background-image: linear-gradient(to bottom, #e6eaee 50%, transparent 50%);
|
2025-02-19 11:03:37 +00:00
|
|
|
background-size: 1px 15px; // 第一个值是宽度,第二个值是虚线的总长度(实线+空白)
|
|
|
|
background-repeat: repeat-y;
|
|
|
|
}
|
|
|
|
|
2025-02-26 08:30:07 +00:00
|
|
|
|
|
|
|
|
2025-02-19 11:03:37 +00:00
|
|
|
.divider4 {
|
|
|
|
position: absolute;
|
|
|
|
z-index: 3;
|
|
|
|
left: 1186px;
|
|
|
|
width: 1px;
|
2025-02-20 06:27:48 +00:00
|
|
|
height: 100vw;
|
2025-02-22 09:37:27 +00:00
|
|
|
background-image: linear-gradient(to bottom, #e6eaee 50%, transparent 50%);
|
2025-02-19 11:03:37 +00:00
|
|
|
background-size: 1px 15px; // 第一个值是宽度,第二个值是虚线的总长度(实线+空白)
|
|
|
|
background-repeat: repeat-y;
|
|
|
|
}
|
|
|
|
|
|
|
|
.divider5 {
|
|
|
|
position: absolute;
|
|
|
|
z-index: 3;
|
|
|
|
left: 1420px;
|
|
|
|
width: 1px;
|
|
|
|
height: 100vw;
|
|
|
|
}
|
|
|
|
|
2025-02-19 03:52:29 +00:00
|
|
|
.carousel-img {
|
|
|
|
width: 100%;
|
|
|
|
height: 100vh;
|
|
|
|
object-fit: cover;
|
|
|
|
image-rendering: -webkit-optimize-contrast;
|
|
|
|
image-rendering: crisp-edges;
|
|
|
|
-webkit-backface-visibility: hidden;
|
|
|
|
backface-visibility: hidden;
|
|
|
|
transform: translateZ(0);
|
|
|
|
-webkit-font-smoothing: antialiased;
|
|
|
|
-moz-osx-font-smoothing: grayscale;
|
|
|
|
}
|
|
|
|
|
|
|
|
.panel {
|
|
|
|
height: 100vh;
|
|
|
|
position: sticky;
|
|
|
|
top: 0;
|
|
|
|
color: var(--dark);
|
|
|
|
font-size: 30px;
|
|
|
|
overflow: hidden;
|
|
|
|
|
2025-02-20 06:27:48 +00:00
|
|
|
// 为第四个panel添加特殊处理
|
|
|
|
&:last-child {
|
|
|
|
position: relative;
|
|
|
|
height: auto;
|
|
|
|
min-height: 100vh;
|
2025-02-23 06:49:56 +00:00
|
|
|
overflow-y: scroll;
|
2025-02-23 06:47:00 +00:00
|
|
|
top: auto;
|
|
|
|
sticky: none;
|
2025-02-23 06:49:56 +00:00
|
|
|
|
|
|
|
// 隐藏滚动条
|
|
|
|
&::-webkit-scrollbar {
|
|
|
|
display: none;
|
|
|
|
}
|
2025-02-26 07:30:41 +00:00
|
|
|
|
|
|
|
-ms-overflow-style: none;
|
|
|
|
/* IE and Edge */
|
|
|
|
scrollbar-width: none;
|
|
|
|
/* Firefox */
|
2025-02-20 06:27:48 +00:00
|
|
|
}
|
|
|
|
|
2025-02-19 03:52:29 +00:00
|
|
|
&.first-panel {
|
|
|
|
position: relative;
|
|
|
|
|
|
|
|
.carousel-img {
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
left: 0;
|
|
|
|
z-index: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.content {
|
|
|
|
position: relative;
|
|
|
|
z-index: 2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.parallax-bg {
|
|
|
|
position: absolute;
|
2025-02-26 07:30:41 +00:00
|
|
|
|
2025-02-19 03:52:29 +00:00
|
|
|
width: 100%;
|
|
|
|
height: 120%;
|
|
|
|
z-index: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.content {
|
|
|
|
position: relative;
|
2025-02-19 11:03:37 +00:00
|
|
|
z-index: 5;
|
2025-02-19 03:52:29 +00:00
|
|
|
height: 100%;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
justify-content: center;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
|
2025-02-19 11:03:37 +00:00
|
|
|
.content3 {
|
|
|
|
position: relative;
|
2025-02-20 06:27:48 +00:00
|
|
|
z-index: 5;
|
2025-02-19 11:03:37 +00:00
|
|
|
padding: 0 500px;
|
|
|
|
height: 100%;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
|
2025-02-26 07:30:41 +00:00
|
|
|
>div {
|
2025-02-20 06:27:48 +00:00
|
|
|
opacity: 0;
|
|
|
|
transform: translateY(50px);
|
|
|
|
will-change: opacity, transform;
|
|
|
|
}
|
|
|
|
|
2025-02-26 07:30:41 +00:00
|
|
|
>.n-marquee {
|
2025-02-20 06:27:48 +00:00
|
|
|
opacity: 0;
|
|
|
|
transform: translateY(50px);
|
|
|
|
will-change: opacity, transform;
|
|
|
|
visibility: hidden; // 初始隐藏跑马灯
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.content4 {
|
|
|
|
position: relative;
|
|
|
|
z-index: 5;
|
|
|
|
padding: 0 500px;
|
|
|
|
height: 100%;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
2025-02-19 11:03:37 +00:00
|
|
|
}
|
|
|
|
|
2025-02-19 03:52:29 +00:00
|
|
|
.no-hover {
|
|
|
|
pointer-events: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
:deep(.no-hover) {
|
2025-02-26 07:30:41 +00:00
|
|
|
|
2025-02-19 03:52:29 +00:00
|
|
|
.n-carousel__dots,
|
|
|
|
.n-carousel__arrow {
|
|
|
|
pointer-events: auto;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.second-image {
|
|
|
|
opacity: 0;
|
2025-02-19 11:03:37 +00:00
|
|
|
padding: 0 64px;
|
2025-02-19 03:52:29 +00:00
|
|
|
transform: translateY(50px);
|
|
|
|
will-change: opacity, transform;
|
|
|
|
pointer-events: none;
|
|
|
|
}
|
2025-02-19 11:03:37 +00:00
|
|
|
|
|
|
|
.divider3,
|
|
|
|
.divider4 {
|
|
|
|
:deep(.n-divider) {
|
|
|
|
border-left: none;
|
2025-02-22 09:37:27 +00:00
|
|
|
background-image: linear-gradient(to bottom, #e6eaee 50%, transparent 50%);
|
2025-02-19 11:03:37 +00:00
|
|
|
background-size: 1px 30px;
|
|
|
|
background-repeat: repeat-y;
|
|
|
|
}
|
|
|
|
}
|
2025-02-20 06:27:48 +00:00
|
|
|
|
|
|
|
// 确保跑马灯内容可见
|
|
|
|
:deep(.n-marquee) {
|
|
|
|
.n-marquee-content {
|
|
|
|
visibility: visible !important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.container {
|
|
|
|
display: grid;
|
|
|
|
grid-template-columns: repeat(2, 1fr);
|
|
|
|
/* Two columns */
|
|
|
|
gap: 30px;
|
|
|
|
padding: 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.card {
|
|
|
|
margin-top: 39px;
|
|
|
|
box-shadow: 0px 3px 14px 1px rgba(0, 0, 0, 0.16);
|
|
|
|
padding: 9px;
|
|
|
|
border-radius: 12px;
|
2025-02-22 09:37:27 +00:00
|
|
|
background-color: #ffffff;
|
2025-02-20 06:27:48 +00:00
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: center;
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.card img {
|
|
|
|
max-width: 100%;
|
|
|
|
border-radius: 8px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.js-detail {
|
|
|
|
text-align: left;
|
|
|
|
margin-top: 10px;
|
|
|
|
font-size: 20px;
|
2025-02-22 09:37:27 +00:00
|
|
|
color: #10253e;
|
2025-02-20 06:27:48 +00:00
|
|
|
width: 100%;
|
|
|
|
padding: 0 23px;
|
|
|
|
}
|
2025-02-21 03:27:50 +00:00
|
|
|
|
|
|
|
.footer-content {
|
2025-02-20 06:27:48 +00:00
|
|
|
height: 90px;
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
align-items: center;
|
2025-02-21 03:27:50 +00:00
|
|
|
|
|
|
|
.copyright {
|
2025-02-20 06:27:48 +00:00
|
|
|
width: 232px;
|
|
|
|
height: 22pxpx;
|
|
|
|
}
|
|
|
|
}
|
2025-02-22 09:37:27 +00:00
|
|
|
</style>
|
2025-02-26 08:30:07 +00:00
|
|
|
<style lang="scss">
|
|
|
|
.n-base-select-option {
|
|
|
|
&.n-base-select-option--pending::before {
|
|
|
|
background: #EAEDFD !important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
|