diff --git a/components/pages/home-page2.tsx b/components/pages/home-page2.tsx
index 0eb4bba..f75a0c4 100644
--- a/components/pages/home-page2.tsx
+++ b/components/pages/home-page2.tsx
@@ -276,7 +276,7 @@ export function HomePage2() {
{/* 动态锚点:来源于服务端 homeTab 配置,title 作为锚点与标题 */}
{homeTabs.map((tab) => (
-
(sectionRefs.current as any)[tab.title.toLowerCase()] = el}>
+
(sectionRefs.current as any)[tab.title.toLowerCase()] = el}>
))}
diff --git a/components/ui/VideoCoverflow.tsx b/components/ui/VideoCoverflow.tsx
index b64b350..5f1bd1c 100644
--- a/components/ui/VideoCoverflow.tsx
+++ b/components/ui/VideoCoverflow.tsx
@@ -2,11 +2,13 @@
import React from 'react';
import { Swiper, SwiperSlide } from 'swiper/react';
-import { Autoplay, EffectCoverflow } from 'swiper/modules';
+import { Autoplay, EffectCoverflow, EffectCards } from 'swiper/modules';
import type { Swiper as SwiperType } from 'swiper/types';
+import { useDeviceType } from '@/hooks/useDeviceType';
import 'swiper/css';
import 'swiper/css/effect-coverflow';
+import 'swiper/css/effect-cards';
/** 默认视频列表(来自 home-page2.tsx 中的数组) */
const DEFAULT_VIDEOS: string[] = [
@@ -40,21 +42,22 @@ const VideoCoverflow: React.FC
= ({
}) => {
const swiperRef = React.useRef(null);
const videoRefs = React.useRef>({});
- const [isMobile, setIsMobile] = React.useState(false);
+ const { isMobile } = useDeviceType();
const [activeIndex, setActiveIndex] = React.useState(0);
const playActive = React.useCallback((activeIndex: number) => {
Object.entries(videoRefs.current).forEach(([key, el]) => {
- if (!el) return;
+ const video = el as HTMLVideoElement | null;
+ if (!video) return;
const index = Number(key);
if (index === activeIndex) {
// 尝试播放当前居中视频
- el.play().catch(() => {});
+ video.play().catch(() => {});
} else {
// 暂停其他视频,重置到起点以减少解码负担
- el.pause();
+ video.pause();
try {
- el.currentTime = 0;
+ video.currentTime = 0;
} catch {}
}
});
@@ -115,28 +118,32 @@ const VideoCoverflow: React.FC = ({
{videos.map((src, index) => (
-
+