宇宙画布:纯 CSS+JS 实现交互式深空艺术
一、项目效果与核心亮点
先给大家直观展示项目效果:
- 全屏黑色深空背景,搭配彩色渐变星云,氛围感拉满
- 1000 颗随机大小、随机闪烁的星星,布满整个屏幕
- 50 个彩色星系,随机旋转、发光,层次丰富
- 中心蓝色行星 + 光环,3 颗卫星按不同速度、方向公转
- 随机位置划过的流星,动态感拉满
- 环绕行星的小行星带,持续旋转
- 纯前端实现,无图片、无第三方库,加载极快
核心技术点:
- CSS
@keyframes实现流畅动画 - 径向渐变 / 线性渐变打造星球、星云、流星质感
transform实现 3D 旋转、公转、缩放效果- JS 动态生成大量元素,随机化属性更自然
- 绝对定位 + 层级管理,构建深空立体空间
二、项目完整代码(带详细注释)
1. HTML 结构(搭建宇宙骨架)
HTML 只负责搭建容器,所有视觉元素由 CSS 绘制、JS 动态生成,结构极简清晰。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
2. CSS 样式(绘制宇宙万物)
CSS 是这个项目的核心,负责所有视觉效果、动画、质感的实现,每一行都加了注释,方便理解。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
|
3. JavaScript(动态生成宇宙元素)
JS 负责批量生成星星、星系、流星、小行星,随机化大小、位置、动画时长,让星空更自然不呆板。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
|
三、核心技术解析
1. 公转动画实现原理
卫星和小行星的圆周运动是项目核心,用到 CSS transform 组合技巧:
|
1 |
|
- 第一层
rotate:让元素绕父容器中心旋转 translateX:控制公转半径- 第二层反向
rotate:保证元素自身不旋转,只沿轨道公转
2. 3D 视觉效果
行星光环和小行星带使用 rotateX(75deg),把平面圆环压成倾斜的 3D 环,配合阴影和渐变,瞬间有太空立体感。
3. 性能优化要点
- 用 JS 批量生成元素,避免手动写 1000 个 div
- 动画使用
transform和opacity,触发合成线程,不回流重绘 - 星星大小、动画延迟随机化,减少视觉重复
- 无图片、无字体包,纯代码渲染,加载速度极快
四、项目拓展方向
大家可以基于这个项目继续优化,做出更炫酷的效果:
- 添加鼠标交互:星星跟随鼠标移动、点击生成流星
- 增加更多行星:多行星系统,不同轨道、颜色、转速
- 添加音效:深空白噪音,沉浸式体验拉满
- 适配移动端:调整尺寸,支持手机端全屏展示
- 加入暗黑模式切换、星空亮度调节
五、演示代码
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 |
|
更多推荐

所有评论(0)