当前位置:首页 > 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:

<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>

性能优化技巧

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

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

响应式处理

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

星空实现js

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

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

相关文章

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…