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) => ( -
+