jquery 实现心漫天动画效果

效果图
代码如下

<!doctype html>
<html onselectstart='return false'>
<head>
<meta charset="utf-8">
<title>心漫天</title>
<style type="text/css">
*{margin:0; padding:0;}
html,body{ width:100%; height:100%; overflow:hidden;}
.box{ position:absolute; width:100%; height:100%;}
.box .heart{ width:40px; height:40px; border-radius:0 0 50% 50%; position:absolute;}
.box .left{ width:20px; height:20px; border-radius:50% 50% 0 5px; position:absolute; top:5px; left:0; z-index:1}
.box .right{ width:20px; height:20px; border-radius:50% 50% 5px 0; position:absolute; top:5px; right:0; z-index:1}
.box .cover{ width:40px; height:20px; background:white; position:absolute; top:0; left:0;}
</style>
</head>

<body>
	<div class="box" id="box">
		
	</div>
	<script src="js/jquery-1.11.3.min.js"></script>
	
	<script>
		var box=document.getElementById('box');
		var bd=document.getElementsByTagName('body')[0];
		var w=bd.offsetWidth;
		var h=bd.offsetHeight;
		var hid=[];
		var dir=1;
		var count=0;
		//var op=0;
		function heart(){
			dir=-dir;
			count++;
			var color=Math.ceil(16777215*Math.random()).toString(16);
			var l=Math.floor(Math.random()*w);
			var t=Math.floor(Math.random()*h);
			var o=Math.random();
				//color1=new Array(6-color.length).join(0);
			var left=document.createElement('div');
				left.setAttribute('class','left');
				left.style.background='#'+color;
			var right=document.createElement('div');
				right.setAttribute('class','right');
				right.style.background='#'+color;
			var cover=document.createElement('div');
				cover.setAttribute('class','cover');
			var heart=document.createElement('div');
				heart.setAttribute('class','heart ');
				heart.setAttribute('dir',dir);
				heart.style.background='#'+color;
			heart.appendChild(left);
			heart.appendChild(right);
			heart.appendChild(cover);
			box.appendChild(heart);
			
			heart.style.left=l+'px';
			heart.style.top=t+'px';
			heart.style.opacity=o+0.1;
		}
		//heart();
		
		function create(){
			var n=parseInt(Math.random()*20)+1;
			for(var i=0; i<n; i++){
				heart();
			}
		};
		create();
		function move(){
			var tm=Math.random()*5;
			var lm=Math.random()*5;
			var hrt=$('.heart');
			for(var i=0; i<count; i++){
				tm+=1; lm+=1;
				if(hrt.eq(i).css('top') && hrt.eq(i).css('left')){
					var top=hrt.eq(i).css('top');
					var lft=hrt.eq(i).css('left');
					var op=hrt.eq(i).css('opacity');
					var td=hrt.eq(i).attr('dir');
					var ld=hrt.eq(i).attr('dir');
					top=parseInt(top.substring(0,top.length-2));
					lft=parseInt(lft.substring(0,lft.length-2));
					top+=tm*td;lft+=lm*ld;
					//op==0?op=0.6:op=0;
					op+=td*0.5;
					if(op<0){
						op+=0.1;
					}else if(op>=1){
						op=0.1;
					};
					if(top>h||lft>w||top<0||lft<0){
						hrt.eq(i).remove();
					};
					
					hrt.eq(i).css({'top':top,'left':lft,'opacity':op});
					
					if(hrt.length<=10){
						create();
					};
				};
				
				//console.log(typeof top,lft);
			};
			
		};
		var time=setInterval(move,200);
		$('.heart').click(function(){
			$(this).remove();
		});
	</script>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值