粘性区块滚动组件(sticky 卡片堆叠滚动,偏移/高度实时可调)

CSS 许可:自研原创

粘性区块滚动组件:纯 CSS position:sticky 实现多区块滚动时依次「钉」在容器顶部堆叠成塔的效果,粘性偏移与卡片高度实时可调,零 JS 依赖,移动端表现稳定。

效果演示(真实可交互)

⬇ 在下方容器内滚动,区块会依次「钉」在顶部堆叠成塔

继续向下滚动 ↓
01

粘性区块

position: sticky 让区块钉在容器顶部

02

依次堆叠

后续区块把前面的向上顶起,形成卡片塔

03

纵深层次

多层叠加营造出空间纵深感

04

回滚复位

向上滚动时各区块依次归位

↑ 滚动结束,可回滚复位

完整代码

核心原理只有一个属性:position: sticky。元素在滚动到指定偏移量前保持正常文档流位置,到达后「钉」在滚动容器顶部;多个粘性元素依次出现时,后一个会把前一个向上顶,形成层层堆叠的卡片塔。

<div class="view">
  <div class="intro">向下滚动 ↓</div>
  <section class="card card--1"><h3>粘性区块 01</h3></section>
  <section class="card card--2"><h3>粘性区块 02</h3></section>
  <section class="card card--3"><h3>粘性区块 03</h3></section>
  <div class="outro">滚动结束 ↑</div>
</div>
.view {
  height: 470px;               /* 滚动容器必须有确定高度 */
  overflow-y: auto;            /* 让内容在容器内滚动 */
  padding: 12px 16px;
}
.card {
  position: sticky;            /* 关键属性:粘性定位 */
  top: 10px;                   /* 钉在容器顶部时的偏移 */
  height: 152px;               /* 卡片自身高度 */
  margin-bottom: 16px;         /* 卡片间距 */
  border-radius: 16px;
  background: linear-gradient(150deg, #6c8cff, #a96cff);
  color: #fff;
  padding: 20px;
}

无需任何 JavaScript,即可实现滚动堆叠。若需要响应偏移与高度,只需把 top 与 height 换成 CSS 变量,由 JS 滑块写入即可(演示组件即如此实现)。

参数说明

参数位置说明
粘性偏移top: 10px卡片停靠时距容器顶部的距离,演示中 0-40px 可调
卡片高度height每张卡片的占用高度,影响堆叠节奏
卡片间距margin-bottom卡片之间的间隔,也决定露出上一张卡片的宽度
容器高度.view 的 height必须显式设置,sticky 才能有「钉住」的空间

兼容性与性能

常见问题

Q: sticky 完全不生效是什么原因? 三个最常见原因:一是祖先元素设置了 overflow: hidden(sticky 会退化为 relative),二是粘性元素与容器之间没有足够的滚动空间(容器高度太小),三是 top 未设置——sticky 必须搭配 top/left/right/bottom 之一才会生效。

Q: 为什么卡片堆叠时会出现闪烁或跳动? 多为 margin-bottom 与卡片高度比例不当导致。建议卡片高度 ≥ 两倍间距,并给卡片加 border-radius 与阴影增强层次感,视觉上会更稳定。

Q: 想让粘性区块固定在页面视口而不是容器内怎么做? 把滚动容器换成 body 本身即可,sticky 相对最近的滚动祖先工作;若页面本身就是滚动主体,sticky 元素会相对视口钉住。

Q: 可以商用吗? 可以。本组件为粤喵自研原创代码,免费商用无需署名,改色、改高度、增减区块数量均无限制。

许可与来源

  • 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
  • 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
  • 首次发布:2026-09-01 · 最近更新:2026-09-01
  • 修改日志:2026-09-01 首次发布;2026-09-13 补充许可证与来源标注、复制按钮说明与法务页入口
  • 纠错:联系页面 / min@cactus.asia,2 个工作日内核实处理

常见问题

这个组件可以商用吗?

可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。

浏览器兼容性如何?

支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。

怎么修改动画参数?

直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核