.meteor { position: absolute;…">
当前位置:首页 > JavaScript

js实现流星划过

2026-03-15 20:04:56JavaScript

js实现流星划过

实现流星划过效果的方法

使用HTML和CSS创建基础结构

<div class="meteor"></div>
.meteor {
  position: absolute;
  width: 2px;
  height: 2px;
  background: white;
  border-radius: 50%;
  box-shadow: 0 0 10px 3px white;
}

使用JavaScript生成动画

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

  // 随机起始位置(屏幕顶部)
  const startX = Math.random() * window.innerWidth;
  meteor.style.left = `${startX}px`;
  meteor.style.top = '0px';

  document.body.appendChild(meteor);

  // 随机动画时长(1-3秒)
  const duration = 1000 + Math.random() * 2000;

  // 随机终点位置(屏幕底部)
  const endX = startX + (Math.random() * 200 - 100);
  const endY = window.innerHeight;

  // 动画效果
  const animation = meteor.animate([
    { transform: `translate(0, 0)` },
    { transform: `translate(${endX - startX}px, ${endY}px)` }
  ], {
    duration: duration,
    easing: 'linear'
  });

  // 动画结束后移除元素
  animation.onfinish = () => meteor.remove();
}

定时生成流星

// 每0.5-2秒生成一颗流星
setInterval(createMeteor, 500 + Math.random() * 1500);

// 初始生成几颗流星
for(let i = 0; i < 3; i++) {
  setTimeout(createMeteor, Math.random() * 1000);
}

增强视觉效果

body {
  background: #000;
  overflow: hidden;
  height: 100vh;
  margin: 0;
}

.meteor::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100px;
  height: 1px;
  background: linear-gradient(90deg, white, transparent);
  transform-origin: left center;
}

优化性能

// 限制最大流星数量
let meteorCount = 0;
const MAX_METEORS = 10;

function createMeteor() {
  if(meteorCount >= MAX_METEORS) return;

  meteorCount++;

  // ...之前的创建代码...

  animation.onfinish = () => {
    meteor.remove();
    meteorCount--;
  };
}

添加拖尾效果

// 在createMeteor函数中添加
meteor.animate([
  { opacity: 1, width: '2px', height: '2px' },
  { opacity: 0.5, width: '4px', height: '4px' },
  { opacity: 0, width: '1px', height: '1px' }
], {
  duration: duration,
  easing: 'cubic-bezier(0.4, 0, 0.2, 1)'
});

这段代码会创建一个流星划过夜空的动画效果,流星会随机从屏幕顶部出现,以不同角度和速度划过屏幕,并在到达底部后消失。可以通过调整CSS和JavaScript参数来改变流星的外观和行为。

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

相关文章

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Promise…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…