…">
当前位置:首页 > JavaScript

js实现流星划过

2026-04-07 13:29:06JavaScript

实现流星划过效果

使用JavaScript和CSS可以创建一个简单的流星划过动画效果。以下是实现方法:

HTML结构

<div class="meteor"></div>

CSS样式

js实现流星划过

.meteor {
  position: absolute;
  width: 100px;
  height: 2px;
  background: linear-gradient(to right, rgba(255,255,255,0), #fff);
  transform: rotate(-45deg);
  transform-origin: left;
  animation: meteor 3s linear infinite;
  opacity: 0;
}

@keyframes meteor {
  0% {
    transform: rotate(-45deg) translateX(0);
    opacity: 1;
  }
  70% {
    opacity: 1;
  }
  100% {
    transform: rotate(-45deg) translateX(-1000px);
    opacity: 0;
  }
}

JavaScript动态生成流星

function createMeteor() {
  const meteor = document.createElement('div');
  meteor.className = 'meteor';

  // 随机位置
  const startX = Math.random() * window.innerWidth;
  const startY = Math.random() * window.innerHeight / 2;

  meteor.style.left = `${startX}px`;
  meteor.style.top = `${startY}px`;

  // 随机大小和速度
  const size = Math.random() * 100 + 50;
  const duration = Math.random() * 3 + 2;

  meteor.style.width = `${size}px`;
  meteor.style.animationDuration = `${duration}s`;

  document.body.appendChild(meteor);

  // 动画结束后移除元素
  meteor.addEventListener('animationend', () => {
    meteor.remove();
  });
}

// 每隔一段时间创建新流星
setInterval(createMeteor, 800);

增强效果的方法

添加拖尾效果 修改CSS中的背景渐变:

js实现流星划过

background: linear-gradient(
  to right, 
  rgba(255,255,255,0), 
  #fff,
  rgba(255,255,255,0.7),
  rgba(255,255,255,0)
);

随机颜色 在JavaScript中添加:

const colors = ['#fff', '#9cf', '#f9f', '#fc9'];
const randomColor = colors[Math.floor(Math.random() * colors.length)];
meteor.style.background = `linear-gradient(to right, rgba(255,255,255,0), ${randomColor})`;

多流星同时出现 调整创建间隔和数量:

function createMultipleMeteors() {
  const count = Math.floor(Math.random() * 3) + 1;
  for(let i = 0; i < count; i++) {
    setTimeout(createMeteor, i * 300);
  }
}

setInterval(createMultipleMeteors, 1000);

性能优化

使用requestAnimationFrame替代setInterval可以获得更流畅的动画效果:

function meteorLoop(timestamp) {
  if(!lastTime || timestamp - lastTime > 800) {
    createMeteor();
    lastTime = timestamp;
  }
  requestAnimationFrame(meteorLoop);
}

let lastTime;
requestAnimationFrame(meteorLoop);

通过调整CSS属性和JavaScript参数,可以创建出各种不同风格的流星效果,包括大小、速度、颜色和轨迹的变化。

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

相关文章

js实现计算器

js实现计算器

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

js实现全屏

js实现全屏

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

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…