表白必备神器

文案:喜欢就去表白 大不了连朋友都做不成 做朋友有什么用 我又不缺朋友 我缺你。
线上预览地址:http://www.prosys.club/love/index.html 复制浏览器直接访问即可

效果图:

表白必备神器

HTML:

<!doctype html>
<html>
<head>
	<meta charset="utf-8">
	<title>爱心树表白动画</title>	    
    <link type="text/css" rel="stylesheet" href="css/default.css">
		
	<script type="text/javascript" src="js/jquery.min.js"></script>
	<script type="text/javascript" src="js/jscex.min.js"></script>
	<script type="text/javascript" src="js/jscex-parser.js"></script>
	<script type="text/javascript" src="js/jscex-jit.js"></script>
	<script type="text/javascript" src="js/jscex-builderbase.min.js"></script>
	<script type="text/javascript" src="js/jscex-async.min.js"></script>
	<script type="text/javascript" src="js/jscex-async-powerpack.min.js"></script>
	<script type="text/javascript" src="js/functions.js" charset="utf-8"></script>
	<script type="text/javascript" src="js/love.js" charset="utf-8"></script>

</head>
<body>
	<!--===音乐:原谅——刘瑞琦======================================-->
	<audio autoplay>
			<source src="music/forgive.mp3"/>
	</audio>  
	
	<!--==============================================================-->
	<div id="main">
        <div id="error">
        	抱歉!目前您的浏览器无法显示,请更新至最新版本或使用其他主流浏览器,谢谢合作。
        </div>
        <div id="wrap">
            <div id="text">
		        <div id="code">
		      		<font color="#FF0000">  	<!-- 文字可自定义编辑 -->
		      			<span class="say">亲爱的小幸运,我爱你,虽然你看不见我对你的告白</span><br>
						<span class="say"></span><br>
						<span class="say">我知道我不会甜言蜜语,但是我会用行动证明一切</span><br>
						<span class="say"></span><br>
			        	<span class="say">你说我啰嗦,有些东西因为越在乎所以越失去</span><br>
						<span class="say">因为我太爱你了,所以我失去你了</span><br>
						<span class="say">因为我太啰嗦了,所以你离开了我</span><br>
						<span class="say">虽然你看不见我的告白,但是我还是要把这些心里话说出来</span><br>
						<span class="say"></span><br>
                        <span class="say"><span class="space"></span> -- 爱你的人--</span>
			  		</font>
			  		</p>
      			</div>
            </div>
		    <div id="clock-box">
		        <span class="STYLE1"></span>
		        <font color="#33CC00">亲爱的小幸运,我喜欢你</font>
				<span class="STYLE1">已经是……</span>
		        <div id="clock"></div>
		    </div>
		    <canvas id="canvas" width="1100" height="680"></canvas>
	    </div>
            
    </div>
    

	<!--==========================================================-->
    <script>
	    (function(){
	        var canvas = $('#canvas');
	        if (!canvas[0].getContext) {
	            $("#error").show();
	            return false;       
	        }
	
	        var width = canvas.width();
	        var height = canvas.height();        
	        canvas.attr("width", width);
	        canvas.attr("height", height);
	        var opts = {
	            seed: {
	                x: width / 2 - 20,
	                color: "rgb(190, 26, 37)",
	                scale: 2
	            },
	            branch: [
	                [535, 680, 570, 250, 500, 200, 30, 100, [
	                    [540, 500, 455, 417, 340, 400, 13, 100, [
	                        [450, 435, 434, 430, 394, 395, 2, 40]
	                    ]],
	                    [550, 445, 600, 356, 680, 345, 12, 100, [
	                        [578, 400, 648, 409, 661, 426, 3, 80]
	                    ]],
	                    [539, 281, 537, 248, 534, 217, 3, 40],
	                    [546, 397, 413, 247, 328, 244, 9, 80, [
	                        [427, 286, 383, 253, 371, 205, 2, 40],
	                        [498, 345, 435, 315, 395, 330, 4, 60]
	                    ]],
	                    [546, 357, 608, 252, 678, 221, 6, 100, [
	                        [590, 293, 646, 277, 648, 271, 2, 80]
	                    ]]
	                ]] 
	            ],
	            bloom: {
	                num: 700,
	                width: 1080,
	                height: 650,
	            },
	            footer: {
	                width: 1200,
	                height: 5,
	                speed: 10,
	            }
	        }
	
	        var tree = new Tree(canvas[0], width, height, opts);
	        var seed = tree.seed;
	        var foot = tree.footer;
	        var hold = 1;
	
	        canvas.click(function(e) {
	            var offset = canvas.offset(), x, y;
	            x = e.pageX - offset.left;
	            y = e.pageY - offset.top;
	            if (seed.hover(x, y)) {
	                hold = 0; 
	                canvas.unbind("click");
	                canvas.unbind("mousemove");
	                canvas.removeClass('hand');
	            }
	        }).mousemove(function(e){
	            var offset = canvas.offset(), x, y;
	            x = e.pageX - offset.left;
	            y = e.pageY - offset.top;
	            canvas.toggleClass('hand', seed.hover(x, y));
	        });
	
	        var seedAnimate = eval(Jscex.compile("async", function () {
	            seed.draw();
	            while (hold) {
	                $await(Jscex.Async.sleep(10));
	            }
	            while (seed.canScale()) {
	                seed.scale(0.95);
	                $await(Jscex.Async.sleep(10));
	            }
	            while (seed.canMove()) {
	                seed.move(0, 2);
	                foot.draw();
	                $await(Jscex.Async.sleep(10));
	            }
	        }));
	
	        var growAnimate = eval(Jscex.compile("async", function () {
	            do {
	    	        tree.grow();
	                $await(Jscex.Async.sleep(10));
	            } while (tree.canGrow());
	        }));
	
	        var flowAnimate = eval(Jscex.compile("async", function () {
	            do {
	    	        tree.flower(2);
	                $await(Jscex.Async.sleep(10));
	            } while (tree.canFlower());
	        }));
	
	        var moveAnimate = eval(Jscex.compile("async", function () {
	            tree.snapshot("p1", 240, 0, 610, 680);
	            while (tree.move("p1", 500, 0)) {
	                foot.draw();
	                $await(Jscex.Async.sleep(10));
	            }
	            foot.draw();
	            tree.snapshot("p2", 500, 0, 610, 680);
	
	            // 会有闪烁不得意这样做
	            canvas.parent().css("background", "url(" + tree.toDataURL('image/png') + ")");
	            canvas.css("background", "#ffe");
	            $await(Jscex.Async.sleep(300));
	            canvas.css("background", "none");
	        }));
	
	        var jumpAnimate = eval(Jscex.compile("async", function () {
	            var ctx = tree.ctx;
	            while (true) {
	                tree.ctx.clearRect(0, 0, width, height);
	                tree.jump();
	                foot.draw();
	                $await(Jscex.Async.sleep(25));
	            }
	        }));
	
	        var textAnimate = eval(Jscex.compile("async", function () {
			    var together = new Date();
			    together.setFullYear(2010,1 , 15); 			//时间年月日
			    together.setHours(16);						//小时	
			    together.setMinutes(53);					//分钟
			    together.setSeconds(0);					//秒前一位
			    together.setMilliseconds(2);				//秒第二位
	
			    $("#code").show().typewriter();
	            $("#clock-box").fadeIn(500);
	            while (true) {
	                timeElapse(together);
	                $await(Jscex.Async.sleep(1000));
	            }
	        }));
	
	        var runAsync = eval(Jscex.compile("async", function () {
	            $await(seedAnimate());
	            $await(growAnimate());
	            $await(flowAnimate());
	            $await(moveAnimate());
	
	            textAnimate().start();
	
	            $await(jumpAnimate());
	        }));
	
	        runAsync().start();
	    })();
	    
    </script>
	<!--=======附属说明====================================================-->
	<div style="text-align:center;margin:50px 0; font:normal 14px/24px 'MicroSoft YaHei';">
		<p>
			适用浏览器:360、FireFox、Chrome、Safari、Opera、傲游、搜狗, 不支持IE8及以下浏览器。
		</p>
	</div>
</body>
</html>

CSS:

body{margin:0;padding:0;background:#ffe;font-size:14px;font-family:'微软雅黑','宋体',sans-serif;color:#231F20;overflow:auto}
a {color:#000;font-size:14px;}
#main{width:100%;}
#wrap{position:relative;margin:0 auto;width:1100px;height:680px;margin-top:10px;}
#text{width:400px;height:425px;left:60px;top:80px;position:absolute;}
#code{display:none;font-size:16px;}
#clock-box {position:absolute;left:60px;top:550px;font-size:28px;display:none;}
#clock-box a {font-size:28px;text-decoration:none;}
#clock{margin-left:48px;}
#clock .digit {font-size:64px;}
#canvas{margin:0 auto;width:1100px;height:680px;}
#error{margin:0 auto;text-align:center;margin-top:60px;display:none;}
.hand{cursor:pointer;}
.say{margin-left:5px;}
.space{margin-right:150px;}

由于JS文件较多,全部代码我就放网盘里了,大家可以微信搜搜 木易学长 微信公众号,回复:表白,即可获取完整源码哟~

表白必备神器

 

上一篇:Android实现人脸识别动画效果


下一篇:栅格数据灰度化并前端转换展示