最近在玩个球(绿色的小东西)。如大家所见哈~~在所有页面都有个小直男针(呸,是指南针好吗!)他会到处乱跑而且会转动。之所以做这个,是因为之前看到有人的博客左下角有两个圆圈一直在转,觉得挺有趣的,然后仔细一想,也就是CSS3+JS的定时器就可以了,所以我也来玩玩~~~~正好呢很久没点开果壳任意门,最近又觉得很好玩,而且他的小直男针转动效果我也觉得简单有趣,于是就直接copy了他的图,然后借鉴了下效果,再开一下脑洞,做了这个~~~。
那么首先我们来点击一下下面这些按钮
可以看到每次点击都有不同的效果,好吧这很简单…………….
下面分几步来讲一下我是怎么实现他的~~事先说一句:半桶水的前端发这种东西感觉很忐忑啊,有更好方法实现的请在评论里面糊我熊脸谢谢。
第一步是要引用jquery,这个就不用我说了吧。
然后是定时器,jquery提供的,要让他自动的执行动作就要靠这个神器啦~~~
//ran作为随机数,他决定现在使用哪个效果 var ran=Math.random()*1200; //off对象用来配合offset()方法来改变指南针的坐标 var off=new Object(); off.left=0; off.top=0; var x=0; var y=0; var r=0; //定时器,每隔几秒就会执行一次当前的效果 setInterval(function () { if(ran<200) random1(); else if(ran<600) random2(); else if(ran<1000) random3(); else if(ran<1100) random4(); else if(ran<1150) random5(); else if(ran<1200) random6(); }, 4000);
好了有了定时器之后,我们只需要在规定的时间动起来就好,下面是random效果(至于为什么用jQuery而不用$嘛………因为之前jq加载有点问题,现在还在解决我也懒得改这部分代码了)
还是先来看看第一个效果吧:
function random1(){ off.left=Math.random()*500+300; off.top=Math.random()*500+400; x+=off.left; y+=off.top; if(y>=1150||x>=700) { off.top=0-y+10; off.left=0-x+10; y=10; x=10; } myrotate(); jQuery("#guoke").offset(off); }
用jq通过id取得元素,然后用offset改变他的坐标。这里说个看起来有点奇怪的地方,有了off之后还有x和y看起来是不是有点多余?如果你也这么想就跟我之前一样,其实offset不是重置坐标,而是坐标位移量,所以当这个”#guoke”超出屏幕大小时,如果把off.x=0;off.y=0;的话并不能让他回到左上角,只能让他原地不动。于是我用x和y记录一直以来的位移量,在必要的时候减去他回到原位(感觉好挫,谁有好方法教教我谢谢。发博文老是出馊主意还只是让指望别人帮我忙真是对不起大家了Orz)
于是下面给多个效果:
function random2(){ x=Math.random()*70-55; y=Math.random()*300+100; myrotate(); jQuery("#guoke").animate({left:x,top:y}); } function random3(){ x=Math.random()*1000; y=Math.random()*500+100; myrotate(); jQuery("#guoke").animate({left:x,top:y}); }
这里用到的是animate(),效果是可以看到他移动的过程。这两个函数看起来很相似,只是一个固定在左边移动,一个全屏跑来跑去。
最后来看看旋转:
function myrotate(){ r=Math.random()*2000; jQuery('#guoke').css("transform","rotate(-"+r+"deg)"); jQuery('#guoke').css("-moz-transform","rotate(-"+r+"deg)"); jQuery('#guoke').css("-webkit-transform","rotate(-"+r+"deg)"); }
嘛,这个就很简单了,只是设置css而已,这个是利用了css3的rotate。有兴趣的同学可以F12看看我打印出来的ran值,你们可以直接修改。
——————————————————————————————————————–
摸鱼神教~
X爷造访,蓬荜生辉(隐约有点害怕X爷又来拿我的给XSS练手 )