diff --git a/themes/plog/components/BlogListPage.js b/themes/plog/components/BlogListPage.js index f8455ae7..1ac57222 100644 --- a/themes/plog/components/BlogListPage.js +++ b/themes/plog/components/BlogListPage.js @@ -4,6 +4,7 @@ import { useGlobal } from '@/lib/global' import { useRouter } from 'next/router' import Link from 'next/link' import BlogPost from './BlogPost' +import { useEffect, useRef } from 'react' export const BlogListPage = props => { const { page = 1, posts, postCount } = props @@ -16,12 +17,33 @@ export const BlogListPage = props => { const showNext = page < totalPage const pagePrefix = router.asPath.split('?')[0].replace(/\/page\/[1-9]\d*/, '').replace(/\/$/, '') + const blogPostRefs = useRef([]) + + useEffect(() => { + const observer = new IntersectionObserver(entries => { + entries.forEach(entry => { + if (entry.isIntersecting) { + entry.target.classList.toggle('visible') + } + }) + }, { + threshold: 0.1 // 调整阈值以达到最佳效果 + }) + + blogPostRefs.current.forEach(ref => { + observer.observe(ref) + }) + + return () => { + observer.disconnect() + } + }, []) return (