漏斗过滤加载动画(Funnel Loader 液体下渗)
漏斗过滤加载动画,三角形漏斗内蓝色液体反复下渗,漂浮颗粒随液面下沉,底部水滴依次滴落,完整还原"过滤"过程,支持三套配色、调速与暂停,纯 CSS 零依赖。
效果演示(真实可交互)
漏斗由入口、锥形斗身与细管嘴三段组成,蓝色液体从满到见底反复循环,液体中的白色颗粒随之沉底,管嘴下方三颗水滴错峰坠落,把”过滤筛选”的过程演得清清楚楚。蓝 / 紫 / 红三套配色。
正在过滤数据…
配色
速度 1.0×
完整代码
HTML 结构:
<div class="fu-funnel">
<span class="fu-top"></span> <!-- 漏斗入口 -->
<span class="fu-body"> <!-- 锥形斗身 -->
<span class="fu-liquid"></span> <!-- 液体 -->
<span class="fu-float f1"></span> <!-- 漂浮颗粒 -->
<span class="fu-float f2"></span>
</span>
<span class="fu-spout"></span> <!-- 管嘴 -->
</div>
<div class="fu-drops"><i></i><i></i><i></i></div> <!-- 底部水滴 -->
CSS 核心:
/* 锥形斗身:clip-path 直接切出漏斗形状 */
.fu-body {
position: relative; width: 128px; height: 96px;
clip-path: polygon(0 0, 100% 0, 58% 100%, 42% 100%);
background: #c9d2e8; overflow: hidden;
}
/* 液体:从满到只剩 22% 再瞬间回满,模拟下渗 */
.fu-liquid {
position: absolute; left: 0; right: 0; bottom: 0; height: 100%;
background: linear-gradient(180deg, #7ab8ff, #4f8cff);
animation: fu-drain 2.6s ease-in-out infinite;
}
@keyframes fu-drain {
0% { height: 100%; }
62% { height: 22%; } /* 液体见底 */
78% { height: 22%; } /* 底部停顿一下 */
100% { height: 100%; } /* 瞬间回满,开始下一轮 */
}
/* 底部水滴:与液体下渗同周期,错峰坠落 */
.fu-drops i {
width: 9px; height: 9px; border-radius: 50%; background: #4f8cff;
opacity: 0; animation: fu-drop 2.6s ease-in infinite;
}
.fu-drops i:nth-child(2) { animation-delay: .47s; }
.fu-drops i:nth-child(3) { animation-delay: .88s; }
@keyframes fu-drop {
0% { transform: translateY(-8px) scale(.5); opacity: 0; }
12% { opacity: 1; }
55% { transform: translateY(26px) scale(.9); opacity: 0; }
100% { transform: translateY(-8px) scale(.5); opacity: 0; }
}
参数说明
| 参数 | 位置 | 说明 |
|---|---|---|
| 下渗周期 | --fu-dur | 一轮”满→空→满”的时长,默认 2.6s |
| 漏斗角度 | clip-path 的 58%/42% | 两值越接近 50%,漏斗越尖 |
| 液面最低点 | fu-drain 的 22% | 数值越大,残留液体越多 |
| 底部停顿 | 62% → 78% | 见底后的停留时长,制造”滴完再续”节奏 |
| 颗粒位置 | .fu-float 的 left | 分散在液体不同水平位置更有层次 |
| 水滴错峰 | animation-delay | 建议与下渗周期错开 0.15-0.9s 均匀分布 |
兼容性与性能
- 液体只动
height,在clip-path容器内裁剪,动画元素少、无布局扩散 clip-path: polygon兼容 Chrome 55+ / Firefox 3.5+ / Safari 9.1+ / Edge 79+,覆盖所有现代浏览器- 兼容 Chrome / Firefox / Safari / Edge 最新版;移动端表现一致
- 全部动画实例不超过 8 个(液体、2 颗粒、3 水滴、入口高光),性能开销可忽略
- 适合数据筛选中、表格过滤、搜索匹配、导出处理等”排除杂质”语义的等待场景
常见问题
Q: 液体回满时为什么是”瞬跳”而不是倒流? 这是刻意设计——真实过滤是单向的,瞬跳回满能表达”新一批数据又进来了”;若想倒流,把 keyframes 改成 height 从 22% 线性回到 100% 并加 ease-out 即可。
Q: 颗粒在液体见底后还在动,有点违和? 把 fu-sink 的透明度关键帧与 fu-drain 对齐:颗粒在液体见底(62%)时同步 opacity: 0,就不会”浮空”了。
Q: 想要更立体的漏斗? 给 .fu-body 加同形状的深色投影层(另一个 clip-path 的伪元素,向下偏移 4px),或给斗身加左明右暗的线性渐变模拟光照。
Q: 漏斗尖部液体颜色太深/太浅? 液体是渐变填充,尖部自然更窄更浓;把渐变改为同一色相深浅差更小的两色(如 #5b8ff7 → #4f8cff),观感会更均匀。
许可与来源
- 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
- 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
- 首次发布: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(缓动曲线)等属性即可,代码中有注释说明。