JavaScript实现的鼠标跟随特效示例【2则实例】


Posted in Javascript onDecember 22, 2018

本文实例讲述了JavaScript实现的鼠标跟随特效。分享给大家供大家参考,具体如下:

鼠标是现在电脑的基本配置之一,也是最常用的输入命令的工具之一。本文将将一些与鼠标有关系的特效。

1、跟随鼠标移动的彩色星星

如题,会根据鼠标的移动而移动,并在鼠标周围随机来回移动,让人感觉在放大缩小。根据书上的代码做了一些修改。比如,如果用户不移动鼠标,是不会显示星星效果的:其次就是将源代码中的亮度调节等去掉了,因为效果并不是很明显。截了三幅图,黑点近似代表鼠标的位置。效果图如下:

JavaScript实现的鼠标跟随特效示例【2则实例】

源代码:

<html>
<head>
 <title>
  Twinkle stars
 </title>
 <style>
  .iestars{
   position:absolute;
   top:00px; left:00px;
   height:50px;
   width:50px;
   padding-top:15px;
   text-align:center;
   display:none;
  }
 </style>
</head>
<body>
 <script language = "JavaScript">
  //数组保存星星的颜色,也可以设置为其它颜色,也可以增加或减少颜色数量
  var colours=new Array('ff0000','00ff00','0000ff','ff00ff','00ffff','ffff00');
  var amount=colours.length;
  //初始化参数
  var Ydelay=0,Xdelay=0;  //圆环中心的位置
  var step=0.2;
  var currStep=0;
  var my=0,mx=0;  //记录鼠标当前位置
  var flag=0;
  //在容器中写入"."字符,闪烁的星星即是从"."变化而来的
  for (i=0; i < amount; i++){
   document.write('<div class = "iestars" >...</div>');
  }
  //处理鼠标事件
  function iMouse(){
   my = event.y;
   mx = event.x;
   //第一次初始化,只运行一次
   if (flag==0){
    delay();
    flag=1;
   }
  }
  document.onmousemove = iMouse;
  var iestars=document.getElementsByClassName("iestars");
  function stars(){
   for(i = 0;i < amount;i++){
    var style = iestars[i].style;  //访问每个容器的style属性
    style.color=colours[i];
    style.display="block";
    style.top = Ydelay+80*Math.sin(currStep/2+i*3.1416/3)*Math.sin((currStep)/10);  //竖直位置
    style.left = Xdelay+80*Math.cos(currStep/2+i*3.1416/3)*Math.sin((currStep)/10);  //水平位置
   }
   currStep += step;
  }
  //计算圆环中心的位置,为当前圆环中心位置和鼠标位置的加权平均
  function delay(){
   Ydelay += (my-Ydelay)*1/20;
   Xdelay += (mx-Xdelay)*1/20;
   stars();
   setTimeout('delay()',10);
  }
 </script>
</body>
</html>

2、水中鼠标特效

鼠标上方不断地冒出气泡,这些气泡在上升中不断摇晃,慢慢的变大,直到消失在窗口。

效果图:

JavaScript实现的鼠标跟随特效示例【2则实例】

源代码:

<html>
<head>
<meta charset="utf-8">
 <title>
  Water Bubbles
 </title>
 <style>
 .center{
    position: absolute;
    top:50%;
    left: 50%;
    transform: translate(-50%, -50%);
    border: 2px solid yellow;
    width: 220px;
    height: 42px;
    padding: 10px;
    z-index: 3;
   }
   img{
    position:absolute;
    top:0px;
    left:0px;
    filter:alpha(opacity=40);
   }
 </style>
</head>
<body>
<div id="low">
</div>
<div class="center">
eret
<a href="#" rel="external nofollow" >erte</a>
rt<p>rtdfffffffffff</p>
</div>
</body>
<script language="JavaScript">
  var bubble={
    imgsrc : "img/1.gif",
    Amount : 15,
    my : 10,   //初始位置
    mx : 10,   //初始位置
    Ypos : [], //y数组,记录图片的位置
    Xpos : [], //x数组
    Speed :[], //上升速度
    size : [], //范围
    sizegrow :[],  //增长速度
    angle :[], //余弦曲线的角度
    anglegrow :[], //每次余弦曲线角度变化
    img:"",
  }
  //鼠标事件
  document.onmousemove=MouseMove;
  function MouseMove(){
   bubble.my = event.y-20;
   bubble.mx = event.x;
  }
  //初始化数据
  for (i = 0; i < bubble.Amount; i++){
   bubble.Ypos[i] = bubble.my-20;
   bubble.Xpos[i] = bubble.mx;
   bubble.Speed[i] = Math.random()*1+3;  //速度在[1,4)
   bubble.angle[i] = 0;
   bubble.anglegrow[i] = Math.random()*0.5+0.1;  //角度变换[0.2,0.6)
   bubble.size[i] = 8;
   bubble.sizegrow[i] = Math.random()*1+2;  //尺寸变换[0.5,0.6)
  }
  for (i = 0; i < bubble.Amount; i++){
   bubble.img+='<img class="si" src="' + bubble.imgsrc + '" >';
  }
  var low=document.getElementById("low");
  low.innerHTML=bubble.img;
  var si=document.getElementsByTagName("img");
  //创建冒泡程序
  function MouseBubbles(){
     for (var i = 0; i < bubble.Amount; i++){
      bubble.Ypos[i] += bubble.Speed[i] * (-1)
      bubble.Xpos[i] += bubble.Speed[i] * Math.cos(bubble.angle[i]); ;
       if(bubble.Ypos[i]<-25){//当到达最上方后,重新初始化
        bubble.Ypos[i] = bubble.my;
        bubble.Xpos[i] = bubble.mx;
        bubble.Speed[i] = Math.random() * 4 + 1;
        bubble.size[i] = 8;  //初始尺寸,上限25
       }
    console.log(si[i]+" "+i);
      si[i].style.left = bubble.Xpos[i];  //左右变化
      si[i].style.top = bubble.Ypos[i] ;
      si[i].style.width = bubble.size[i];  //改变尺寸
      si[i].style.height = bubble.size[i];
      console.log(bubble.Ypos[i]);//组四行放怀
      bubble.size[i] += bubble.sizegrow[i];
      bubble.angle[i] += bubble.anglegrow[i];
      if (bubble.size[i] > 24) bubble.size[i] = 25;
     }
      setTimeout('MouseBubbles()', 15);
 }
 MouseBubbles();
 </script>
</html>

PS:感兴趣的朋友还可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun 测试上述代码,看看运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
Feb 03 Javascript
window.parent调用父框架时 ie跟火狐不兼容问题
Jul 30 Javascript
深入浅出理解javaScript原型链
May 09 Javascript
Bootstrap基础学习
Jun 16 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
Oct 17 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
Jan 15 Javascript
Node.js开发者必须了解的4个JS要点
Feb 21 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
Oct 10 Javascript
vue组件父子间通信之综合练习(聊天室)
Nov 07 Javascript
小程序云开发实现数据库异步操作同步化
May 18 Javascript
微信小程序如何加载数据库真实数据的实现
Mar 04 Javascript
JavaScript交换变量的常用方法小结【4种方法】
May 07 Javascript
iview实现select tree树形下拉框的示例代码
Dec 21 #Javascript
Element input树型下拉框的实现代码
Dec 21 #Javascript
傻瓜式vuex语法糖kiss-vuex整理
Dec 21 #Javascript
vue项目设置scrollTop不起作用(总结)
Dec 21 #Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
Dec 21 #Javascript
JS二级菜单不同实现方法分析【4种方法】
Dec 21 #Javascript
vue中eslintrc.js配置最详细介绍
Dec 21 #Javascript
You might like
从Web查询数据库之PHP与MySQL篇
2009/09/25 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
php检测url是否存在的方法
2015/04/14 PHP
JS解析XML的实现代码
2009/11/12 Javascript
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
javascript innerHTML使用分析
2010/12/03 Javascript
uploadify 3.0 详细使用说明
2012/06/18 Javascript
js日期相关函数总结分享
2013/10/15 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
jQuery制作简洁的图片轮播效果
2015/04/03 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
jQuery实现HTML表格单元格的合并功能
2016/04/06 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
vue搜索和vue模糊搜索代码实例
2019/05/07 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
python写的ARP攻击代码实例
2014/06/04 Python
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
python迭代器常见用法实例分析
2019/11/22 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
如何利用cmp命令比较文件
2016/04/11 面试题
办公室文员工作自我评价
2013/12/01 职场文书
内科护士节演讲稿
2014/09/11 职场文书
协议书范文
2015/01/27 职场文书
行政诉讼答辩状
2015/05/21 职场文书
车间安全生产管理制度
2015/08/06 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书