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 相关文章推荐
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
Apr 02 Javascript
jQuery的实例及必知重要的jQuery选择器详解
May 20 Javascript
jQuery简单获取DIV和A标签元素位置的方法
Feb 07 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
Jun 11 Javascript
微信小程序项目实践之主页tab选项实现
Jul 18 Javascript
详解操作虚拟dom模拟react视图渲染
Jul 25 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
Mar 06 Javascript
微信小程序自定义多列选择器使用详解
Jun 21 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
Sep 06 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
Sep 27 Javascript
javascript canvas API内容整理
Feb 16 Javascript
jquery实现拖拽小方块效果
Dec 10 jQuery
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 前一天或后一天的日期
2008/06/28 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
解析PHP多种序列化与反序列化的方法
2013/06/06 PHP
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
PHP 闭包详解及实例代码
2016/09/28 PHP
php面试实现反射注入的详细方法
2019/09/30 PHP
JS中的substring和substr函数的区别说明
2013/05/07 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
JavaScript函数详解
2014/11/17 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
2016/08/01 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
Python实现的金山快盘的签到程序
2013/01/17 Python
python在命令行下使用google翻译(带语音)
2014/01/16 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
python实现基于SVM手写数字识别功能
2020/05/27 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
对python周期性定时器的示例详解
2019/02/19 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
python-地图可视化组件folium的操作
2020/12/14 Python
python利用xpath爬取网上数据并存储到django模型中
2021/02/26 Python
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
农村婚礼司仪主持词
2015/06/29 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书