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

React项目中navbar和main div重叠,如何实现二者并排布局?

问题根因

  • CSS类名大小写不匹配:JSX中根容器类名是大写的App,但CSS中写的是小写的.app,导致flex布局规则完全没有生效,两个容器默认按块级元素逻辑排列,叠加导航栏默认定位规则就会出现遮挡重叠。
  • 宽度设置冲突:已经给main容器设置flex:0.8的情况下再加width:100%,会破坏flex的自动宽度分配逻辑。
  • 结构嵌套错误:footer容器被错误嵌套在main容器内部,会打乱flex占比计算逻辑。

修复方案

1. 修正JSX结构

把footer从main容器内移出,和navbar、main同级:

<div className="App">
  <div className="navbar">
    <Navbar></Navbar>
  </div>
  <div className="main">
    <Layout>
      <div className = "routes">
        <Switch>
          <Route exact path = "/">
            <Homepage/>
          </Route>
          <Route path = "/exchanges">
            <Exchanges/>
          </Route>
          <Route exact path = "/cryptocurrencies">
            <Cryptocurrencies/>
          </Route>
          <Route path = "/crypto/:coinId">
            <CryptoDetails/>
          </Route>
          <Route path = "/news">
            <News/>
          </Route>
        </Switch>
      </div>
    </Layout>
  </div>
  <div className="footer">
    <Typography.Title level = {5} style = {{color:"white"}} align = "center">
      The CryptoVerse <br/>
      All rights reserved @2021<br/> made by Utkrisht
    </Typography.Title>
    <Space>
      <Link to = "/">Home</Link>
      <Link to = "/exchanges">Exchanges</Link>
      <Link to = "/news">News</Link>
    </Space>
  </div>
</div>

2. 修正CSS样式

修正类名大小写,删除冲突属性,补充适配规则:

/* 类名改为大写和JSX匹配 */
.App{
    display: flex;
    overflow: auto;
    min-height: 100vh;
}

.navbar{
    /* 固定占比20%,避免内容挤压导航栏变形 */
    flex: 0 0 20%;
    background-color: rgb(0, 21, 41);
}

.main{
    /* 占满剩余宽度,删除冲突的width:100% */
    flex: 1;
    display: flex;
    flex-direction: column;
}
.routes{
    padding: 20px;
    flex: 1;
}
.footer{
    background-color: rgb(0, 21, 41);
    padding: 20px 0;
}

注意:如果你的<Navbar>组件内部自带position: fixed或者position: absolute定位规则,请一并删除,flex布局下不需要额外固定定位,否则仍会出现重叠问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:36:02