From 50ee25ec15cfd2d018c4e8e15e0ead6660831366 Mon Sep 17 00:00:00 2001 From: tangly1024 Date: Thu, 23 Dec 2021 14:12:39 +0800 Subject: [PATCH] =?UTF-8?q?feature:=20Header=E6=BB=9A=E5=8A=A8=E9=A1=BA?= =?UTF-8?q?=E6=BB=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/Header.js | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/components/Header.js b/components/Header.js index b4f045f9..2d908f70 100644 --- a/components/Header.js +++ b/components/Header.js @@ -2,6 +2,7 @@ import BLOG from '@/blog.config' import { useGlobal } from '@/lib/global' import { faArrowDown } from '@fortawesome/free-solid-svg-icons' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import throttle from 'lodash.throttle' import { useCallback, useEffect, useState } from 'react' import Typed from 'typed.js' @@ -35,7 +36,7 @@ export default function Header () { const scrollTrigger = useCallback(() => { if (window.scrollY > windowTop & window.scrollY < window.innerHeight & !autoScroll) { autoScroll = true - scrollTo(window.innerHeight, autoScrollEnd) + scrollTo(wrapperTop, autoScrollEnd) } if (window.scrollY < windowTop & window.scrollY < window.innerHeight & !autoScroll) { autoScroll = true @@ -57,6 +58,14 @@ export default function Header () { } } + let wrapperTop = 0 + function updateHeaderHeight () { + if (window) { + const wrapperElement = document.getElementById('wrapper') + wrapperTop = wrapperElement.offsetTop + } + } + useEffect(() => { updateHeaderHeight() updateTopNav() @@ -64,14 +73,17 @@ export default function Header () { window.addEventListener('resize', updateHeaderHeight) return () => { window.removeEventListener('scroll', scrollTrigger) + window.removeEventListener('resize', updateHeaderHeight) } }) - return