sticky定位结合relative与fixed特性,元素在滚动到设定阈值(如top:0)时吸附视口,需指定临界值才生效,且受限于有滚动机制的父容器范围,不脱离文档流,适用于导航栏、表头等局部固定场景。

sticky定位是CSS中position属性的一个值,表现上结合了relative和fixed的特点,适用于一些需要局部固定效果的场景。
1. 基于滚动位置动态切换定位
元素在父容器内正常流动(像relative),当滚动到某个阈值时,自动“吸附”在视口的指定位置(像fixed)。这个阈值由top、bottom、left或right决定。
常见用法:- 设置 position: sticky; top: 0; 后,元素滚动到距离视口顶部0px时会固定住
- 可配合 bottom 实现底部粘性效果
2. 必须指定临界值才能生效
只写 position: sticky 不起作用,必须搭配 top、bottom、left 或 right 中至少一个值,否则会当作 relative 处理。
错误示例:- position: sticky; → 等同于 relative
- position: sticky; top: 10px; → 滚动到距顶部10px时开始固定
3. 受限于父容器的范围
sticky元素不会超出其最近有滚动机制的祖先容器。一旦滚动出该容器的可视范围,就会停止固定效果。
立即学习“前端免费学习笔记(深入)”;
注意点:- 如果父元素高度不够或没有设置 overflow,可能看不到预期效果
- 遇到 overflow: hidden 的父级,sticky可能会被截断或失效
4. 不脱离文档流
与 fixed 和 absolute 不同,sticky元素仍占据原始文档空间,不会引起其他元素的重排错位。
优势:- 页面结构更稳定
- 适合导航栏、表格表头、侧边目录等需要临时固定的组件










