当前位置:首页 > JavaScript

js实现星空

2026-02-01 12:56:59JavaScript

使用Canvas绘制星空效果

在JavaScript中实现星空效果可以通过HTML5的Canvas元素结合随机生成星星的坐标和大小来完成。以下是一个基础的实现方法:

js实现星空

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

// 设置canvas尺寸为窗口大小
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

// 星星数组
const stars = [];

// 初始化星星
function initStars() {
  for (let i = 0; i < 200; i++) {
    stars.push({
      x: Math.random() * canvas.width,
      y: Math.random() * canvas.height,
      radius: Math.random() * 1.5,
      speed: Math.random() * 0.2,
      alpha: Math.random()
    });
  }
}

// 绘制星星
function drawStars() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.fillStyle = 'white';

  stars.forEach(star => {
    ctx.globalAlpha = star.alpha;
    ctx.beginPath();
    ctx.arc(star.x, star.y, star.radius, 0, Math.PI * 2);
    ctx.fill();

    // 移动星星
    star.y += star.speed;

    // 如果星星超出底部边界,重置到顶部
    if (star.y > canvas.height) {
      star.y = 0;
      star.x = Math.random() * canvas.width;
    }
  });

  requestAnimationFrame(drawStars);
}

// 窗口大小改变时重设canvas尺寸
window.addEventListener('resize', () => {
  canvas.width = window.innerWidth;
  canvas.height = window.innerHeight;
});

initStars();
drawStars();

添加闪烁效果

让星星随机闪烁可以增强真实感:

function drawStars() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.fillStyle = 'white';

  stars.forEach(star => {
    // 随机改变透明度实现闪烁
    if (Math.random() < 0.01) {
      star.alpha = Math.random();
    }

    ctx.globalAlpha = star.alpha;
    ctx.beginPath();
    ctx.arc(star.x, star.y, star.radius, 0, Math.PI * 2);
    ctx.fill();

    star.y += star.speed;

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

  requestAnimationFrame(drawStars);
}

添加不同大小的星星

创建不同大小的星星可以增加视觉效果层次感:

function initStars() {
  for (let i = 0; i < 300; i++) {
    const radius = Math.random() * 3;
    stars.push({
      x: Math.random() * canvas.width,
      y: Math.random() * canvas.height,
      radius: radius,
      speed: radius * 0.1,  // 较大的星星移动更快
      alpha: Math.random()
    });
  }
}

完整的HTML结构

<!DOCTYPE html>
<html>
<head>
  <title>星空效果</title>
  <style>
    body {
      margin: 0;
      overflow: hidden;
      background-color: #000;
    }
    canvas {
      display: block;
    }
  </style>
</head>
<body>
  <canvas id="starCanvas"></canvas>
  <script>
    // 上面的JavaScript代码放在这里
  </script>
</body>
</html>

这个实现创建了一个基本的星空效果,包含随机分布的星星、星星移动和闪烁效果。可以通过调整星星数量、大小范围和移动速度来获得不同的视觉效果。

js实现星空

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

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js如何实现继承

js如何实现继承

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

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEv…