3

请看一下我正在构建的这个网站上的黑色导航栏:http: //thesemlab.com/

当您向下滚动时,我正在使用 jQuery Waypoints 将此栏的位置从静态更改为固定。插件:http: //imakewebthings.com/jquery-waypoints/

我的问题是,如果您向下滚动得相当快,这不是一个非常平滑的过渡。它会很快跳到固定位置,看起来有点笨拙。

我尝试过使用 CSS 过渡,但它什么也没做!任何想法将不胜感激。

谢谢!

4

1 回答 1

0

这是一篇很老的帖子,网上有很多很好的例子。以防万一有人遇到这个问题,这个帮助最大(https://remysharp.com/2017/06/29/smooth-scroll-with-sticky-nav)。帮助的主要事情是使用“requestAnimationFrame”作为限制 window.onscroll 事件以与时间一致的手段。

下面是一些 React 代码的一部分,但希望它能提供更多的想法。

// ... 从功能组件中。

const [isFixed, setIsFixed] = useState(false);

useEffect(() => {
    const checkSetIsFixed = () => {
        const { y } = containerRef.current.getBoundingClientRect();
        if (y <= 0) {
            setIsFixed(true);
        } else {
            setIsFixed(false);
        }
    }

    checkSetIsFixed();

    const onScroll = (e) => {
        requestAnimationFrame(checkSetIsFixed);
    };

    window.addEventListener("scroll", onScroll);

    return () => {
        window.removeEventListener("scroll", onScroll);
    }
}, []);
于 2020-04-14T09:41:16.990 回答