当前位置:首页 > 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尺寸并重新计算星星位置:

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

星空实现js

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

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现计算器

js实现计算器

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

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Paren…

js实现日历

js实现日历

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

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…