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

React-Bootstrap Offcanvas导航栏响应式断点失效问题求助

问题排查与解决方案

错误1:expand属性值拼写错误

你第一版代码中expand="1g"使用了数字1,正确值应为小写字母L的lg,对应Bootstrap的992px响应式断点,拼写错误导致断点规则完全不生效,所以屏幕宽度变化时导航栏无任何响应。

错误2:错误将Navbar.Offcanvas嵌套在Navbar.Collapse内

React-Bootstrap的Offcanvas类型导航栏本身内置了响应式逻辑,不需要额外包裹<Navbar.Collapse>组件。你嵌套后,大屏下Collapse组件正常展开,但Offcanvas组件默认在非激活状态下为隐藏状态,导致导航内容无法正常显示在导航栏上。

修正后的完整代码

import {
  Navbar,
  Container,
  Offcanvas,
  NavDropdown,
  Form,
  FormControl,
  Button,
  Nav,
} from "react-bootstrap";

const Navigation = () => {
  return (
    <Navbar bg="light" expand="lg" collapseOnSelect>
      <Container fluid>
        <Navbar.Brand href="#">Navbar Offcanvas</Navbar.Brand>
        <Navbar.Toggle aria-controls="offcanvasNavbar" />
        <Navbar.Offcanvas
          id="offcanvasNavbar"
          aria-labelledby="offcanvasNavbarLabel"
          placement="end"
        >
          <Offcanvas.Header closeButton>
            <Offcanvas.Title id="offcanvasNavbarLabel">
              Offcanvas
            </Offcanvas.Title>
          </Offcanvas.Header>
          <Offcanvas.Body>
            <Nav className="justify-content-end flex-grow-1 pe-3">
              <Nav.Link href="#action1">Home</Nav.Link>
              <Nav.Link href="#action2">Link</Nav.Link>
              <NavDropdown title="Dropdown" id="offcanvasNavbarDropdown">
                <NavDropdown.Item href="#action3">Action</NavDropdown.Item>
                <NavDropdown.Item href="#action4">
                  Another action
                </NavDropdown.Item>
                <NavDropdown.Divider />
                <NavDropdown.Item href="#action5">
                  Something else here
                </NavDropdown.Item>
              </NavDropdown>
            </Nav>
            <Form className="d-flex">
              <FormControl
                type="search"
                placeholder="Search"
                className="me-2"
                aria-label="Search"
              />
              <Button variant="outline-success">Search</Button>
            </Form>
          </Offcanvas.Body>
        </Navbar.Offcanvas>
      </Container>
    </Navbar>
  );
};

修正后即可实现预期效果:屏幕宽度小于992px时显示汉堡菜单,点击弹出侧边Offcanvas导航;屏幕宽度大于等于992px时隐藏汉堡菜单,导航内容直接显示在导航栏上。

内容的提问来源于stack exchange,提问作者Coraljester

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:06:03