本文实例讲述了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 模仿 雨滴下落 动画