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 相关文章推荐
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
Oct 15 Javascript
Webkit的跨域安全问题说明
Sep 13 Javascript
input链接页面、打开新网页等等的具体实现
Dec 30 Javascript
JavaScript插件化开发教程 (三)
Jan 27 Javascript
jQuery实现的图文高亮滚动切换特效实例
Aug 10 Javascript
一次$.getJSON不执行的简单记录
Jul 19 Javascript
ES6所改良的javascript“缺陷”问题
Aug 23 Javascript
浅谈jquery中使用canvas的问题
Oct 10 Javascript
jQuery日程管理控件glDatePicker用法详解
Mar 29 jQuery
Vue官网todoMVC示例代码
Jan 29 Javascript
详解JavaScript中操作符和表达式
Sep 12 Javascript
详解js中let与var声明变量的区别
Apr 05 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
php读取html并截取字符串的简单代码
2009/11/30 PHP
codeigniter框架批量插入数据
2014/01/09 PHP
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
Laravel 5 框架入门(四)完结篇
2015/04/09 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
php封装的page分页类完整实例
2016/10/18 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
2008/12/02 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
2013/11/19 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
jquery validate demo 基础
2015/10/29 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
JS事件流与事件处理程序实例分析
2019/08/16 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
python实现年会抽奖程序
2019/01/22 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
Django视图、传参和forms验证操作
2020/07/15 Python
澳大利亚在线购买儿童玩具:Toy Universe
2017/12/28 全球购物
英国探险旅游专家:Explore
2018/12/20 全球购物
群众路线个人整改方案
2014/10/25 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
飞越疯人院观后感
2015/06/09 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书