JavaScript

超轻量级php框架startmvc

jQuery实现的模仿雨滴下落动画效果

更新时间:2020-08-08 07:18:01 作者:startmvc
本文实例讲述了jQuery实现的模仿雨滴下落动画效果。分享给大家供大家参考,具体如下:效

本文实例讲述了jQuery实现的模仿雨滴下落动画效果。分享给大家供大家参考,具体如下:

效果如图:

 

实现思路:定时器每隔x秒生成宽高、下落速度(即动画执行时间)、left随机的div。

1.CSS:


body{
 overflow: hidden;/*这是为了防止出现滚动条*/
}
.com{
 border-radius: 0 50% 50% 50%;
 background: skyblue;
 transform: rotate(45deg);
 position: absolute;
 top: 0;
}

2.JS:


$(function(){
 var obj={
 maxW:100,//最大宽度
 minW:10,//最小宽度
 maxSpeed:10000,//最大速度,单位ms
 creat:400//创建雨滴个数的快慢,单位ms
 }
 rain(obj)
})
function rain(obj){
 var maxW=obj.maxW;
 var minW=obj.minW;
 var maxSpeed=obj.maxSpeed;
 var time=obj.creat;
 var maxLeft=$(window).width();
 var time1;
 var j=0;
 time1=setInterval(function(){
 var width=Math.random()*maxW;//随机宽度
 width=width.toFixed(2);
 if(width<minW){
 width=minW;
 }
 var left=Math.random()*maxLeft-width;//随机left值
 left=left.toFixed(2);
 if(left<0){
 left=0;
 }
 j++;
 var speed=Math.random()*maxSpeed;//随机速度
 var item='<div class="com rain'+j+'" style="left:'+left+'px;width:'+width+'px;height:'+width+'px"></div>';//创建雨滴
 $("body").append(item);
 move($(".rain"+j),speed);//雨滴移动
 },time)
}
function move(op,speed){
 var winH=$(window).height();
 var maxH=winH+op.height();//雨滴下落的高度,页面高度加上自身高度就能看到完全落到最底部
 op.animate({
 "top":maxH+"px"
 },speed,function(){
 op.remove();//删除该雨滴
 });
}

本来最开始想计算雨滴left和下落高度的最大值,以免出现滚动条,但是后来想直接body加个overflow:hidden不是更好么,省去多余的代码,效果还一样。

除了用JS实现,还可以用canvas来实现。

感兴趣的朋友可以使用如下工具测试上述代码运行效果:

在线HTML/CSS/JavaScript代码运行工具: http://tools.jb51.net/code/HtmlJsRun

在线HTML/CSS/JavaScript前端代码调试运行工具: http://tools.jb51.net/code/WebCodeRun

jQuery 模仿 雨滴下落 动画