我的编程空间,编程开发者的网络收藏夹
学习永远不晚

html+css+js实现canvas跟随鼠标的小圆特效源码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

html+css+js实现canvas跟随鼠标的小圆特效源码

效果(源码在最后):

在这里插入图片描述

实现:

1.定义标签:


 <h1>北极光之夜</h1>
 <canvas id="draw" style=" position: fixed; display: block;">  
			当前浏览器不支持Canvas,请更换浏览器后再试
 </canvas>

2. 文字的基本样式:


h1{
   position: absolute;
   top: 50%;
   left: 50%;
   transform: translate(-50%,-50%);
   font-size: 5em;
   font-family: 'fangsong';
   color: rgb(38, 205, 247);
  }

top: 50%;
left: 50%;
transform: translate(-50%,-50%); 居中对齐
3. js部分,详细看注释 :


<script>
  
  var canvas = document.querySelector("#draw");
  var yuan = canvas.getContext("2d");  
  
   window.onresize=resizeCanvas;
  function resizeCanvas(){
   canvas.width=window.innerWidth;
   canvas.height=window.innerHeight;
  }
  resizeCanvas(); 

  
  var arr = [];
  
  
  function circle (x,y,r){
   this.x=x;
   this.y=y;
   this.r=r;
   
   this.color = `rgb(${255*Math.random()},${255*Math.random()},${255*Math.random()})`
   
   this.xZou = parseInt(Math.random()*10-5);
   this.yZou = parseInt(Math.random()*10);  
    
   arr.push(this);
  }

  
   circle.prototype.updated = function() {
    
   this.x = this.x + this.xZou ;
   this.y = this.y + this.yZou ;
   
   this.r = this.r - 0.1 ;
   
   if(this.r<0){
    this.remove();
   }
   }
   
   circle.prototype.remove = function (){
    
   for(let i=0;i<arr.length;i++){
     if(this==arr[i])
     {
      arr.splice(i,1);
     }
   }
  }
   
   circle.prototype.render = function(){

   yuan.beginPath();
   yuan.arc(this.x,this.y,this.r,0,2*3.14,false);
   yuan.fillStyle = this.color;
   yuan.fill();
   }
     
   canvas.addEventListener('mousemove',function(e){
    
   new circle(e.offsetX,e.offsetY,Math.random()*15); 
   })

    
   setInterval(function(){
     
    yuan.clearRect(0,0,canvas.width,canvas.height);
    
    for(let i=0;i<arr.length;i++){
     
     arr[i].updated();
     
     if(arr[i].render()){
      arr[i].render();
     }
     
    }

   },30)

 </script>

canvas链接
splice()方法链接
random()方法链接
push()方法链接
resize事件链接

完整源码:


<!DOCTYPE html>
<html lang="zh-CN">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 <style>
  *{
   margin: 0;
   padding: 0;
   box-sizing: border-box;
  }
  
  body{
   background-color: rgb(72, 75, 122);
  }
  
  h1{
   position: absolute;
   top: 50%;
   left: 50%;
   transform: translate(-50%,-50%);
   font-size: 5em;
   font-family: 'fangsong';
   color: rgb(38, 205, 247);
  }
  
 </style>
</head>
<body>
 
  <h1>北极光之夜</h1>

 <canvas id="draw" style=" position: fixed; display: block;">  
			当前浏览器不支持Canvas,请更换浏览器后再试
 </canvas>

 <script>
  
  var canvas = document.querySelector("#draw");
  var yuan = canvas.getContext("2d");  
  
   window.onresize=resizeCanvas;
  function resizeCanvas(){
   canvas.width=window.innerWidth;
   canvas.height=window.innerHeight;
  }
  resizeCanvas(); 

  
  var arr = [];
  
  
  function circle (x,y,r){
   this.x=x;
   this.y=y;
   this.r=r;
   
   this.color = `rgb(${255*Math.random()},${255*Math.random()},${255*Math.random()})`
   
   this.xZou = parseInt(Math.random()*10-5);
   this.yZou = parseInt(Math.random()*10);  
    
   arr.push(this);
  }

  
   circle.prototype.updated = function() {
    
   this.x = this.x + this.xZou ;
   this.y = this.y + this.yZou ;
   
   this.r = this.r - 0.1 ;
   
   if(this.r<0){
    this.remove();
   }
   }
   
   circle.prototype.remove = function (){
    
   for(let i=0;i<arr.length;i++){
     if(this==arr[i])
     {
      arr.splice(i,1);
     }
   }
  }
   
   circle.prototype.render = function(){

   yuan.beginPath();
   yuan.arc(this.x,this.y,this.r,0,2*3.14,false);
   yuan.fillStyle = this.color;
   yuan.fill();
   }
     
   canvas.addEventListener('mousemove',function(e){
    
   new circle(e.offsetX,e.offsetY,Math.random()*15); 
   })

    
   setInterval(function(){
     
    yuan.clearRect(0,0,canvas.width,canvas.height);
    
    for(let i=0;i<arr.length;i++){
     
     arr[i].updated();
     
     if(arr[i].render()){
      arr[i].render();
     }
     
    }

   },30)

 </script>
</body>
</html>

其它:

今日三省吾身:安逸的生活没意思,充满挑战,取得胜利,才是生命真谛。

到此这篇关于html+css+js实现canvas跟随鼠标的小圆特效源码的文章就介绍到这了,更多相关canvas跟随鼠标的小圆内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

html+css+js实现canvas跟随鼠标的小圆特效源码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用canvas怎么实现一个跟随鼠标的小圆特效

这篇文章将为大家详细讲解有关使用canvas怎么实现一个跟随鼠标的小圆特效,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实现:1.定义标签:

北极光之夜

2023-06-14

html+css+javascript实现跟随鼠标移动显示选中效果 的方法

这篇文章主要介绍了html+css+javascript实现跟随鼠标移动显示选中效果 的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1,显示效果:2,html结构
2023-06-08

怎么使用JS实现一个跟随鼠标移动洒落的星星特效

这篇“怎么使用JS实现一个跟随鼠标移动洒落的星星特效”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用JS实现一个跟随鼠
2023-07-05

编程热搜

目录