zoukankan      html  css  js  c++  java
  • javascript实例——鼠标特效篇(包含2个实例)

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

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

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

    源代码:

    <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>
    View Code

    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="#">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>
    View Code
  • 相关阅读:
    2007417 13:01:00 运行时数据结构
    2008515 1:38:00 为受灾的人们祈福,祭那些在地震中离开的人
    200732 19:00:00 一段设置8253芯片的程序
    从实模式到保护模式
    200739 18:01:00 linux界的元老
    2007311 19:11:00 cpu执行第一条指令时情形
    20061127 19:54:00 在你心中有这样的一个人吗? (转)
    linux0.11内存管理——try_to_share()
    2007413 20:46:00 linux0.11之copy_page_tables()函数见解
    POJ1258AgriNet
  • 原文地址:https://www.cnblogs.com/huansky/p/5439454.html
Copyright © 2011-2022 走看看