流星加载动画(Meteor Loader 星空流星划过)
深空星空下的流星加载动画,JS 随机生成繁星与流星,流星带白色光晕斜向划过夜空,支持 1-6 颗流星数量、调速与暂停,适合游戏、太空主题与科技感页面的加载等待。
效果演示(真实可交互)
深蓝星空底上,46 颗星星随机分布并缓慢闪烁,2-6 颗流星以不同的速度与延迟斜向划过,每颗流星带白色头部光晕与渐变尾迹。流星数量与速度均可实时调节。
正在穿梭宇宙…
流星数量 3
速度 1.0×
完整代码
HTML 结构:
<div class="ml-stage">
<!-- 星星与流星均由 JS 动态生成 -->
</div>
CSS 核心:
/* 流星:一条渐变光带,头部用伪元素画光晕 */
.ml-meteor {
position: absolute; width: 120px; height: 2px; border-radius: 2px;
background: linear-gradient(90deg, rgba(255,255,255,.95),
rgba(150,190,255,.4) 55%, transparent);
transform: rotate(-35deg); opacity: 0;
animation: ml-fly 2.2s ease-in infinite;
}
.ml-meteor::before {
content: ''; position: absolute; right: -1px; top: 50%;
width: 6px; height: 6px; margin-top: -3px; border-radius: 50%;
background: #fff; box-shadow: 0 0 12px 3px rgba(160,200,255,.9);
}
@keyframes ml-fly {
0% { transform: translate3d(-60px,-30px,0) rotate(-35deg) scale(.7); opacity: 0; }
6% { opacity: 1; }
22% { transform: translate3d(420px,240px,0) rotate(-35deg) scale(1); opacity: 1; }
30%, 100% { transform: translate3d(560px,320px,0) rotate(-35deg); opacity: 0; }
}
/* 星星闪烁 */
.ml-star { position: absolute; border-radius: 50%; background: #fff;
animation: ml-twinkle 2.6s ease-in-out infinite; }
@keyframes ml-twinkle { 0%, 100% { opacity: .25; } 50% { opacity: .9; } }
JS 核心(随机生成流星):
for (let i = 0; i < count; i++) {
const m = document.createElement('span');
m.className = 'ml-meteor';
m.style.cssText = [
`top:${rand(4, 50)}%`, // 起点纵向位置
`left:${rand(-10, 45)}%`, // 起点横向位置
`animation-duration:${(dur * rand(0.8, 1.3)).toFixed(2)}s`,
`animation-delay:${rand(0, 3).toFixed(2)}s`
].join(';');
stage.appendChild(m);
}
参数说明
| 参数 | 位置 | 说明 |
|---|---|---|
| 流星数量 | JS count | 1-6 颗;越多夜空越繁忙,超过 6 颗显杂乱 |
| 单颗时长 | animation-duration | 基准 2.2s / speed 乘 0.8-1.3 随机抖动 |
| 出发位置 | top / left | 集中在左上区域,保证轨迹覆盖整个画面 |
| 轨迹距离 | ml-fly 的 translate3d | 与容器尺寸相关,改容器记得同步调整 |
| 尾迹长度 | width: 120px | 越长越飘逸,注意头部光晕位置跟随 |
| 星星数量 | JS 循环次数 | 40-60 颗密度合适,过多闪烁噪音大 |
兼容性与性能
- 流星只动
transform与opacity,全程 GPU 合成层,多颗同时划过也不卡顿 - 星星为静态节点 + 透明度闪烁,无布局参与
- 兼容 Chrome / Firefox / Safari / Edge 最新版;JS 生成节点的方式在各端一致
- 流星数量建议不超过 6 颗,避免合成层过多;移动端可降为 2-3 颗
- 适合游戏加载、太空主题页、科技发布会倒计时、深色品牌站的品牌化等待场景
常见问题
Q: 流星轨迹只有一小段就消失了? 流星是固定长度的渐变光带,靠 translate3d 快速位移产生”划过”视觉;如果容器较小,把 ml-fly 里的位移距离改小(如 260px/160px)即可让轨迹完整可见。
Q: 想让流星从不同角度飞过? 每颗流星用行内样式覆盖 --ml-angle(旋转角度),keyframes 里改为 rotate(var(--ml-angle)),就能实现多角度交叉的流星雨。
Q: 星星太多导致画面闪烁刺眼? 把 ml-twinkle 的透明度范围从 .25/.9 收窄到 .4/.8,或把动画时长加大到 4s,闪烁会柔和很多。
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(缓动曲线)等属性即可,代码中有注释说明。