首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js鼠标星星特效

在JavaScript中实现鼠标星星特效,通常是通过HTML5的Canvas元素结合JavaScript来绘制和动画处理星星。以下是这个特效涉及的基础概念、优势、类型、应用场景以及如何实现的基本步骤:

基础概念

  1. Canvas API:HTML5提供的用于在网页上绘制图形的API。
  2. JavaScript动画:通过定时器(如requestAnimationFrame)不断更新画布内容来实现动画效果。
  3. 事件监听:使用JavaScript监听鼠标移动事件(mousemove),以获取鼠标在页面上的位置。

优势

  • 交互性强:能够根据用户的鼠标移动实时响应,提供良好的用户体验。
  • 视觉效果好:星星特效可以增加网页的趣味性和美观度。
  • 灵活性高:可以通过调整参数轻松改变特效的外观和行为。

类型

  • 固定星星背景:页面加载时就生成星星,鼠标移动时星星围绕鼠标旋转或发光。
  • 动态生成星星:随着鼠标的移动动态在画布上生成星星。

应用场景

  • 游戏网站:增加游戏的神秘感和吸引力。
  • 个人主页:个性化装饰,展示独特风格。
  • 活动宣传页:吸引用户注意力,提升页面互动性。

实现步骤

  1. 设置Canvas:在HTML中添加Canvas元素,并通过CSS设置其覆盖整个页面。
  2. 初始化星星:在JavaScript中创建星星对象数组,每个星星有位置、大小、亮度等属性。
  3. 绘制星星:使用Canvas API的绘图方法绘制每个星星。
  4. 动画循环:使用requestAnimationFrame创建动画循环,不断更新星星的位置和状态。
  5. 响应鼠标移动:监听mousemove事件,根据鼠标位置调整星星的动画效果。

示例代码

以下是一个简单的鼠标星星特效实现示例:

代码语言:txt
复制
<canvas id="starCanvas"></canvas>
<script>
const canvas = document.getElementById('starCanvas');
const ctx = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

class Star {
  constructor(x, y) {
    this.x = x;
    this.y = y;
    this.size = Math.random() * 3 + 1;
    this.brightness = Math.random();
  }
  draw() {
    ctx.beginPath();
    for (let i = 0; i < 5; i++) {
      ctx.lineTo(
        this.x,
        this.y - this.size * (i === 0 ? 0 : 1.5 - 0.3 * i)
      );
      ctx.lineTo(
        this.x + this.size * (i === 0 ? 1 : 0.5 - 0.3 * i),
        this.y - this.size * (i === 0 ? 0.5 : 1 - 0.3 * i)
      );
    }
    ctx.closePath();
    ctx.fillStyle = `rgba(255, 255, 255, ${this.brightness})`;
    ctx.fill();
  }
}

let stars = [];
for (let i = 0; i < 100; i++) {
  stars.push(new Star(Math.random() * canvas.width, Math.random() * canvas.height));
}

function animate() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  stars.forEach(star => star.draw());
  requestAnimationFrame(animate);
}
animate();

canvas.addEventListener('mousemove', (e) => {
  stars.forEach(star => {
    let dx = e.clientX - star.x;
    let dy = e.clientY - star.y;
    let distance = Math.sqrt(dx * dx + dy * dy);
    star.brightness = Math.max(0, 1 - distance / 100);
  });
});
</script>

这段代码创建了一个简单的星星特效,星星会根据鼠标的位置改变亮度,形成跟随鼠标的视觉效果。你可以根据需要调整星星的数量、大小、亮度变化范围等参数,以达到理想的视觉效果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Canvas之鼠标滑动特效

    我们会看到很多网页的粒子特效;如上图所示,这些都是借助HTML新特性,使用新增标签Canvas得到的效果;那么我们来了解下canvas。...案例-鼠标滑动效果 了解了canvas之后,我们使用新标签搭配原生JS,实现一个简单的页面特效 ------ 鼠标滑动效果,如下所示: 页面搭建 <!...starlist.splice(i, 1); } }); requestAnimationFrame(render); } render(); 总结 本文我们首先了解了粒子特效...,它大多数是HTML的新特性,使用canvas标签创建出来的,或者说是绘制吧,canvas是画布,但是还需要搭配js来构造动态效果,创建出好看的特效。...总而言之,canvas的出现使得前端页面变得更加丰富多彩,提高了视觉效果,对于用户体验进行了适当的增强,感兴趣的小伙伴可以去尝试下,鼠标滑动效果特效。

    1.9K10

    永夜星河主题特效2(星河背景 + 闪烁文字+点击星星 + 文字弹出特效)

    图片展示 星河背景 + 闪烁文字+点击星星 + 文字弹出特效 <!...text-align: center; opacity: 0; transition: opacity 1s ease; } /* 星星特效...: 星星点击特效: 点击页面时,会在鼠标位置生成一颗星星,慢慢变大并消失,模拟星星散落的效果。...星星使用 div 和 CSS 动画实现,配合鼠标点击事件动态生成。 动态文字彩蛋: 点击后随机显示一句温暖的“彩蛋文字”,比如“你是我心中的星河女主角!”、“星星为你闪烁!”等。...文字位置根据鼠标点击动态生成,显示后自动消失。 视觉效果: 页面背景使用渐变模拟夜空,标题文字带有“光晕”效果。 特效简单又有趣,文字内容可以根据对方喜好自定义,增强专属感。

    7810

    js鼠标事件

    页面加载事件(onload),鼠标双击事件(ondbclick) window.onload=function(){                 //绑定元素,执行对应事件 鼠标双击(ondblclick...(){                     alert('我是双击显示的');                 }             } 鼠标摁下(onmousedown)事件(摁下就执行,鼠标无需抬起...}             } 鼠标抬起(onmouseup)事件(摁下后,鼠标回弹才执行)             window.onload=function(){                 ...鼠标移入(onmouseover)事件             window.onload=function(){                 //绑定元素,执行鼠标移入事件   鼠标移入(onmousemove...){                     alert('鼠标移出操作');                 }             } PS:鼠标移动(onmousemove)和鼠标移入(onmouseover

    18.3K40
    领券