当前位置:首页 > JavaScript

星空实现js

2026-01-31 19:58:33JavaScript

星空效果的实现方法

在JavaScript中创建星空效果通常涉及在HTML5 Canvas上绘制随机分布的星星,并添加闪烁或移动动画。以下是两种常见实现方式:

基础Canvas星空动画

const canvas = document.getElementById('starCanvas');
const ctx = canvas.getContext('2d');

// 设置canvas为全屏
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

// 创建星星数组
const stars = [];
for (let i = 0; i < 500; i++) {
  stars.push({
    x: Math.random() * canvas.width,
    y: Math.random() * canvas.height,
    radius: Math.random() * 1.5,
    speed: Math.random() * 0.2,
    opacity: Math.random()
  });
}

function animateStars() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);

  stars.forEach(star => {
    star.y += star.speed;
    if (star.y > canvas.height) {
      star.y = 0;
      star.x = Math.random() * canvas.width;
    }

    ctx.beginPath();
    ctx.arc(star.x, star.y, star.radius, 0, Math.PI * 2);
    ctx.fillStyle = `rgba(255, 255, 255, ${star.opacity})`;
    ctx.fill();
  });

  requestAnimationFrame(animateStars);
}

animateStars();

使用CSS实现的星空背景

对于不需要复杂动画的简单星空效果,可以使用纯CSS:

星空实现js

<div class="stars"></div>
<style>
.stars {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #000;
  overflow: hidden;
}

.stars::after {
  content: "";
  position: absolute;
  width: 1px;
  height: 1px;
  background: #fff;
  box-shadow: 
    200px 100px white,
    400px 300px white,
    600px 200px white,
    /* 添加更多星星位置 */;
  animation: twinkle 5s infinite;
}

@keyframes twinkle {
  0% { opacity: 0.2; }
  50% { opacity: 1; }
  100% { opacity: 0.2; }
}
</style>

性能优化技巧

对于大量星星的动画,使用对象池技术可以避免频繁创建和销毁对象。将星星位置计算移出渲染循环,仅在需要时更新。

星空实现js

考虑使用WebGL(Three.js等库)实现更复杂的星空效果,特别是需要数千颗星星或3D效果的场景。粒子系统特别适合这种视觉效果。

响应式处理

添加窗口大小变化监听,调整Canvas尺寸并重新计算星星位置:

window.addEventListener('resize', () => {
  canvas.width = window.innerWidth;
  canvas.height = window.innerHeight;
  // 可选:重新初始化星星位置
});

标签: 星空js
分享给朋友:

相关文章

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…