javascript代码实例教程-JS中图片飞飞效果

发布时间:2019-01-28 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-JS中图片飞飞效果脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 实现的基本思想:准备五个img标签,为了方便控制都放在一个p里面,设置p的定位方式为 fixed,设置成这中定位方式主要是为了解决在页面出现滚动条的情况下,图片还能够跟随鼠标移动。然后再鼠标移动的时候,延时给每一个图片设置定位的left和top距离就OK了。HTMLCSS代码如下:

 

复制代码

 1 <htML XMlns="https://www.w3.org/1999/xhtml">

 2     <head>

 3         <style tyPE="text/css" rel="stylesheet">

 4             p{

 5                     width:100px;

 6                     height:80px;

 7                     

 8                     posITion:fixed;

 9         </style>

10     </head>

11 

12     <body>    

13             <p ><img src="images/tianshi.gif" alt="天使" /></p>

14             <p><img src="images/tianshi.gif" alt="天使" /></p>

15             <p><img src="images/tianshi.gif" alt="天使" /></p>

16             <p><img src="images/tianshi.gif" alt="天使" /></p>

17             <p><img src="images/tianshi.gif" alt="天使" /></p>

18     </body>

19 </html>

复制代码

 

 

    在JS中,给当前文档对象注册一个事件,之所以注册给document而不是body是因为,当页面中没有内容的时候,body基本上是没有大小而言。代码如下:

 

 

复制代码

 1     <script type="text/javascript" >

 2         window.onload = function(){

 3             document.onmouSEMove = function(evt){

 4                 VAR e = evt || window.event;

 5                 //拿到鼠标当前的坐标

 6                 var x = parseInt(e.clientX) + 5;

 7                 var y = parseInt(e.clientY) + 5;

 8                 //获取页面上的p控件

 9                 var imgs = document.getelementsbytagname(&#39;p');

10 

11                 setTimeout(function(){

12                         imgs[0].style.left = x + 'px';

13                         imgs[0].style.top = y + 'px';

14                 },0);

15                 setTimeout(function(){

16                     //    var j = i;

17                         imgs[1].style.left = x + 'px';

18                         imgs[1].style.top = y + 'px';

19                 },50);

20                 setTimeout(function(){

21                         imgs[2].style.left = x + 'px';

22                         imgs[2].style.top = y + 'px';

23                 },100);

24                 setTimeout(function(){

25                         imgs[3].style.left = x + 'px';

26                         imgs[3].style.top = y + 'px';

27                 },150);

28                 setTimeout(function(){

29                         imgs[4].style.left = x + 'px';

30                         imgs[4].style.top = y + 'px';

31                 },200);

32             };

33         }

34     </script>

复制代码

    通过上面的代码基本上就已经实现了我们想要的效果,但是非常的繁琐,如果想再添加几个图片,又需要重新的拷贝一大片,还需要计算时间等,不过比较容易理解。

 

    从上面的代码中可以看出,其实每一个setTimeout中代码都是一样的,不同的是imags的索引而已,而且 在每一个setTimeout中传递的都是一个匿名函数。故可以通过一个循环来进行控制,在代码中setTimeout里面传递的是一个匿名函数,是需要引用外部变量的。但由于循环变量i在循环执行完成后已经是5,而在引用它的匿名函数中并不会被驻留,于是最后通过给一个自我执行的匿名函数传参的方式,来使每一个匿名函数来给里面的匿名函数(闭包)维护一个变量作用域。改良后的代码如下:

 

复制代码

 1     <script type="text/javascript" >

 2         window.onload = function(){

 3             document.onmousemove = function(evt){

 4                 var e = evt || window.event;

 5                 //拿到鼠标当前的坐标

 6                 var x = parseInt(e.clientX) + 5;

 7                 var y = parseInt(e.clientY) + 5;

 8                 //获取页面上的p控件

 9                 var imgs = document.getElementsByTagName('p');

10                 

11                 for(var i=0;i<imgs.length;i++){

12                     //通过参数的形式把i传递过来,就能够将每一个i的值一直保存在内存中,直到闭包的匿名函数不在使用它

13                     (function(j){

14                         setTimeout(function(){

15                             imgs[j].style.left = x + 'px';

16                             imgs[j].style.top = y + 'px';

17                         },j*40)

18                     })(i);

19                 };

20             };

21         }

22     </script>

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-JS中图片飞飞效果全部内容,希望文章能够帮你解决javascript代码实例教程-JS中图片飞飞效果所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。