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

FlexBoxGrid2行布局问题:固定导航栏遮挡后续行

固定导航栏遮挡下方内容的解决方案

问题场景

使用FlexBoxGrid2开发项目时,设置了position: fixed的导航栏(.header_container)会遮挡下方的多行布局内容,移除position: fixed可恢复正常排版,但需要保留导航栏固定在顶部的效果。

原代码

CSS

.header_container {
  max-width: 1124px;
  height: 72px;
  padding: 0 55px 0 55px;
  margin: 0 auto;
  background-color: #FFFFFF;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  box-sizing: border-box;
  box-shadow: 0px 0px 16px 0px #26262629;
}
.header_container:after {
  content: "";
  display: table;
  clear: both;
}
.logo {
  float: left;
  width: 119.23px;
  height: 12.31px;
  padding: 20px 55px 20px 55px;
}
nav {
  float: right;
}
nav ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
nav li {
  display: inline-block;
}

.btn {
  width: 78px;
  height: 40px;
  background-color: #FFFFFF;
  color: #1D1D1D;
  font-family: roboto;
  font-size: 13px;
  font-weight: 1000;
  text-align: center;
  border-radius: 2px;
  border: 1px solid #E0E0E0;
  margin-top: 16px;
}
.line {
  max-width: 80%;
  width: 956px;
  height: 1px;
  color: #757575;
  border-bottom: solid 1px;
}

HTML

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>ExamPro</title>
  <link rel="stylesheet" href="https://unpkg.com/flexboxgrid2@7.2.1/flexboxgrid2.css">
</head>
<body>
  <header>
    <div class="header_container">
      <a href=""> <img src="" alt="logo" class="logo"/></a>
      <nav>
        <ul>
          <li><button class="btn">Войти</button></li>
          <li><a href=""> <img src="" alt="basket" class="basket"/></a></li>
        </ul>
      </nav>
    </div>
  </header>
  <div class="container">
    <div class="row">
      <div class="col-xs-12 col-md-12 col-lg-12">
          <div class="line">search</div>
      </div>
    </div>
  </div>
  <div class="container">
    <div class="row">
      <div class="col-xs-12 col-md-12 col-lg-12">
          
      </div>
    </div>
  </div>
</body>
</html>

解决方案

方法1:给body添加顶部内边距

固定定位元素脱离文档流,不会占据页面空间,给body设置与导航栏高度一致的padding-top,将整体内容向下推送,避开导航栏区域:

body {
  padding-top: 72px;
  margin: 0; /* 重置浏览器默认margin,避免额外间距 */
}

方法2:给首个内容容器添加顶部外边距

如果不想修改body样式,可直接给第一个.container设置margin-top,值等于导航栏高度:

.container:first-of-type {
  margin-top: 72px;
}

方法3:添加占位元素填补空间

在header后插入一个与导航栏高度相同的空div,替代导航栏原本占据的文档流空间:

修改后的HTML

<header>
  <div class="header_container">
    <!-- 导航栏原有内容 -->
  </div>
</header>
<!-- 添加占位元素 -->
<div class="header-placeholder"></div>
<!-- 后续内容容器 -->
<div class="container">...</div>

对应CSS

.header-placeholder {
  height: 72px;
}

原理说明

position: fixed会使元素脱离正常文档流,悬浮在页面上方且不占用原空间,导致下方内容自动上移至页面顶部,被导航栏遮挡。通过添加对应高度的间距(内边距、外边距或占位元素),可将内容区域向下偏移,确保内容显示在导航栏下方,同时保留导航栏固定效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 12:36:15