You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Bootstrap导航栏折叠关闭时无动画的问题修复求助

React Bootstrap导航栏折叠关闭时无动画的问题修复求助

我最近在用React+Bootstrap做一个响应式导航栏,想要在屏幕宽度小于992px的时候显示切换图标来展开/收起菜单。目前展开的时候动画是正常的,但关闭的时候菜单直接就“跳没了”,完全没有过渡动画效果。我试了好几种调整方法,也搜了不少资料,就是找不到问题出在哪,想请教各位怎么修复这个折叠关闭时的动画问题。

另外补充下我的设计需求:导航栏初始加载时会有从上方滑入的背景动画,导航链接会延迟1秒显示;我希望关闭的时候能有相反的效果——先让链接淡出,然后导航栏背景再平滑滑回去。

下面是我的代码:

MyNavbar.tsx

import { Container, Image, Nav, Navbar } from "react-bootstrap";
import logo from "../assets/Logo-Rifugio-Mamo.jpg";
import { useEffect, useState } from "react";

const MyNavbar = () => {
  const [scrolling, setScrolling] = useState(false);

  useEffect(() => {
    window.addEventListener("scroll", handleScroll);
  }, []);

  const handleScroll = () => {
    if (window.scrollY > 850) {
      setScrolling(true);
    } else {
      setScrolling(false);
    }
  };

  return (
    // TODO - Collegare i link alle rispettive pagine una volta create.
    <>
      <Navbar expand="lg" className={`my-nav fixed-top ${scrolling ? "scrolled-navbar" : ""}`}>
        <Container>
          <Image src={logo} className="logo d-lg-none m-auto" />
          <Navbar.Toggle aria-controls="basic-navbar-nav" />
          <Navbar.Collapse id="basic-navbar-nav">
            <Nav className="ms-auto">
              <Nav.Link href="#home">Il Rifugio</Nav.Link>
              <Nav.Link href="#link">Il C.R.A.S.</Nav.Link>
              <Nav.Link href="#link">News</Nav.Link>
              <Nav.Link href="#link">Blog</Nav.Link>
            </Nav>
            <Image src={logo} alt="logo" className="logo mx-5 d-none d-lg-block" />
            <Nav className="me-auto">
              <Nav.Link href="#link">FAQ</Nav.Link>
              <Nav.Link href="#link">Donazioni</Nav.Link>
              <Nav.Link href="#link">Volontariato</Nav.Link>
              <Nav.Link href="#link">Visite</Nav.Link>
            </Nav>
          </Navbar.Collapse>
        </Container>
      </Navbar>
    </>
  );
};

export default MyNavbar;

自定义折叠相关CSS

.logo {
  max-width: 120px;
  max-height: 100px;
}

.my-nav {
  padding-block: 1rem;
  transition: all 1s ease-in-out;
  background-color: rgba(89, 141, 89, 0.5);
}

.my-nav .nav-link {
  color: white;
  font-size: 18px;
}

.my-nav .nav-link:hover {
  color: rgb(136, 241, 136);
}

@media screen and (max-width: 992px) {
  .my-nav .navbar-collapse .nav-link {
    opacity: 0;
    transition: opacity 1s 1s linear;
  }
}

.navbar-collapse {
  transition: height 0.8s linear;
}

.navbar-collapse.collapse.show {
  height: 340px;
}

.navbar-collapse.collapse.show .nav-link {
  opacity: 1;
}

.navbar-collapse.collapse.show .nav-link:focus {
  outline: none;
}

.navbar-toggler:focus, .navbar-toggler:active {
  outline: none;
  box-shadow: none;
}

有没有大佬能帮我看看问题出在哪?怎么调整才能让关闭的时候也有平滑的动画效果呀?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 09:04:37