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

如何让div固定在视口上下边缘且不脱离正常文档流?

实现方案

使用position: sticky即可完美匹配你的需求,无需调整现有flex布局结构,也不会出现元素脱离文档流、内容重叠的问题。

核心修改点

  • 给蓝色.sidePanel(如果需要左侧红色侧边导航同步固定,也可给.sideNav添加相同属性)新增3行CSS:
    position: sticky;
    top: 0;
    overflow-y: auto; /* 侧边内容超出高度时支持内部滚动 */
    

完整修改后代码

* {
  box-sizing: border-box;
}

.main {
  display: flex;
  flex-direction: row;
}

.sideNav {
  width: 100px;
  height: 100vh;
  border: 5px solid red;
  /* 如需左侧导航也固定,取消下面三行注释
  position: sticky;
  top: 0;
  overflow-y: auto;
  */
}

.sidePanel {
  width: 50px;
  height: 100vh;
  border: 5px solid blue;
  /* 新增的固定逻辑 */
  position: sticky;
  top: 0;
  overflow-y: auto;
}

.content {
  display: flex;
  flex-direction: column;
  flex-grow: 1;
  height: 200vh;
  margin: auto;
  width: auto;
  border: 5px solid green;
}
<div class="main">
  <div class="sideNav">Side Nav</div>
  <div class="content">This is the content area</div>
  <div class="sidePanel">Side Panel</div>
</div>

原理解释

position: sticky融合了相对定位和固定定位的特性:元素默认保留在正常文档流中,不会挤占其他元素的排版位置,也就不会出现内容和侧边栏重叠的问题;当页面滚动到侧边栏顶部贴合视口顶部时,元素会切换为固定状态,始终保持top:0、占满100vh的效果,直到父级容器.main完全滚出视口才会跟随移动。配合overflow-y: auto就可以实现侧边栏内容超出时的内部滚动能力。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:09:02