From dbba49b76705ad515ea282d51567ae4abd73bbf0 Mon Sep 17 00:00:00 2001 From: tangly1024 Date: Sat, 15 Jul 2023 12:30:53 +0800 Subject: [PATCH] nav-bar --- themes/heo/components/Header.js | 73 -------------------------- themes/heo/components/Hero.js | 43 +++++++++++----- themes/heo/components/NavBar.js | 79 +++++++++++++++++++++++++++++ themes/heo/components/PostHeader.js | 14 ++--- themes/heo/index.js | 51 +++++++++---------- 5 files changed, 139 insertions(+), 121 deletions(-) delete mode 100644 themes/heo/components/Header.js create mode 100644 themes/heo/components/NavBar.js diff --git a/themes/heo/components/Header.js b/themes/heo/components/Header.js deleted file mode 100644 index 624f8a49..00000000 --- a/themes/heo/components/Header.js +++ /dev/null @@ -1,73 +0,0 @@ -import { useCallback, useEffect, useState } from 'react' -import Logo from './Logo' - -import { MenuListTop } from './MenuListTop' -import throttle from 'lodash.throttle' -/** - * 顶部导航 - * @param {*} param0 - * @returns - */ -const Header = props => { - const [isOpen, changeShow] = useState(false) - const [fixedNav, setHeaderBgShow] = useState(false) - const [whiteTitle, setWhiteTitle] = useState(false) - - const toggleMenuOpen = () => { - changeShow(!isOpen) - } - - // 监听滚动 - useEffect(() => { - scrollTrigger() - window.addEventListener('scroll', scrollTrigger) - return () => { - window.removeEventListener('scroll', scrollTrigger) - } - }, []) - - const throttleMs = 200 - - /** - * 根据滚动条,切换导航栏样式 - */ - const scrollTrigger = useCallback(throttle(() => { - const scrollS = window.scrollY - const header = document.querySelector('#header') - const postHeader = document.querySelector('#post-bg') - - // 导航栏设置 白色背景 - if (header && scrollS > 0) { - setHeaderBgShow(true) - setWhiteTitle(false) - } else { - if (postHeader) { - setWhiteTitle(true) - } - setHeaderBgShow(false) - } - }, throttleMs)) - - return (<> - {/* 头条 */} - - ) -} - -export default Header diff --git a/themes/heo/components/Hero.js b/themes/heo/components/Hero.js index 5ed6b333..654e5a41 100644 --- a/themes/heo/components/Hero.js +++ b/themes/heo/components/Hero.js @@ -6,6 +6,8 @@ import Link from 'next/link' import { useRouter } from 'next/router' import { useImperativeHandle, useRef, useState } from 'react' import CONFIG from '../config' +import { useGlobal } from '@/lib/global' +import { Transition } from '@headlessui/react' /** * 顶部英雄区 @@ -15,15 +17,28 @@ import CONFIG from '../config' * @returns */ const Hero = props => { + const { onLoading } = useGlobal() return (
- - {/* 左侧banner组 */} - + + + {/* 左侧banner组 */} + - {/* 右侧置顶文章组 */} - - + {/* 右侧置顶文章组 */} + + +
) } @@ -186,8 +201,8 @@ function TodayCard({ cRef }) { const [isCoverUp, setIsCoverUp] = useState(true) /** - * 外部可以调用此方法 - */ + * 外部可以调用此方法 + */ useImperativeHandle(cRef, () => { return { coverUp: () => { @@ -197,18 +212,18 @@ function TodayCard({ cRef }) { }) /** - * 点击更多 - * @param {*} e - */ + * 点击更多 + * @param {*} e + */ function handleClickMore(e) { e.stopPropagation() setIsCoverUp(false) } /** - * 点击卡片跳转的链接 - * @param {*} e - */ + * 点击卡片跳转的链接 + * @param {*} e + */ function handleCardClick(e) { router.push('https://tangly1024.com') } diff --git a/themes/heo/components/NavBar.js b/themes/heo/components/NavBar.js new file mode 100644 index 00000000..82f2c29b --- /dev/null +++ b/themes/heo/components/NavBar.js @@ -0,0 +1,79 @@ +import { useCallback, useEffect, useState } from 'react' +import Logo from './Logo' + +import { MenuListTop } from './MenuListTop' +import throttle from 'lodash.throttle' +/** + * 顶部导航 + * @param {*} param0 + * @returns + */ +const NavBar = props => { + const [isOpen, changeShow] = useState(false) + const [fixedNav, setFixedNav] = useState(false) + const [textWhite, setTextWhite] = useState(false) + const [navBgWhite, setBgWhite] = useState(false) + + const toggleMenuOpen = () => { + changeShow(!isOpen) + } + + // 监听滚动 + useEffect(() => { + scrollTrigger() + window.addEventListener('scroll', scrollTrigger) + return () => { + window.removeEventListener('scroll', scrollTrigger) + } + }, []) + + const throttleMs = 200 + + /** + * 根据滚动条,切换导航栏样式 + */ + const scrollTrigger = useCallback(throttle(() => { + const scrollS = window.scrollY + + // 导航栏设置 白色背景 + if (scrollS <= 0) { + setFixedNav(false) + setBgWhite(false) + + // 文章详情页特殊处理 + const postHeader = document.querySelector('#post-bg') + if (postHeader) { + setFixedNav(true) + setTextWhite(true) + setBgWhite(false) + } + return + } + + // 向下滚动后的导航样式 + setFixedNav(true) + setTextWhite(false) + setBgWhite(true) + }, throttleMs)) + + return (<> + {/* 头条 */} + + ) +} + +export default NavBar diff --git a/themes/heo/components/PostHeader.js b/themes/heo/components/PostHeader.js index 8c5b7ee4..431a52b7 100644 --- a/themes/heo/components/PostHeader.js +++ b/themes/heo/components/PostHeader.js @@ -17,15 +17,15 @@ export default function PostHeader({ post, siteInfo }) { return (
-
+
{/* eslint-disable-next-line @next/next/no-img-element */}
-
-
+
+
{post.category && <>
@@ -36,11 +36,11 @@ export default function PostHeader({ post, siteInfo }) {
{/* 文章Title */} -
- {post.title} +
+ {post.title}
-
+
{post?.type !== 'Page' && ( @@ -79,7 +79,7 @@ export default function PostHeader({ post, siteInfo }) { -
+
) } diff --git a/themes/heo/index.js b/themes/heo/index.js index 8ed171dd..c9e3152e 100644 --- a/themes/heo/index.js +++ b/themes/heo/index.js @@ -4,7 +4,7 @@ import CommonHead from '@/components/CommonHead' import { useEffect, useRef } from 'react' import Footer from './components/Footer' import SideRight from './components/SideRight' -import Header from './components/Header' +import NavBar from './components/NavBar' import { useGlobal } from '@/lib/global' import BLOG from '@/blog.config' import { isBrowser, loadExternalResource } from '@/lib/utils' @@ -53,23 +53,8 @@ const LayoutBase = props => {