jQuery仿极客公园火箭发射“返回顶部”效果(优化篇)

3,778
jQuery仿极客公园火箭发射“返回顶部”效果(优化篇)
  • 4.63 / 5 5
4.63分(19票)
jQuery仿极客公园火箭发射“返回顶部”效果(优化篇)

承接上一篇《jQuery仿极客公园火箭发射“返回顶部”效果(初始篇)》,本文将对前一篇的代码进行优化。还是转载自andyliu

先给出个演示Demo:演示地址

今天我们主要做的是将上一篇的代码进行面向对象改进

我直接上代码了注释写的比较清楚:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<!DOCTYPE HTML>
<html>
	<head>
		<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
		<style>
			.one {width:100%;height:3000px;}
			#backtotop {background:url(http://www.geekpark.net/public/img/icons/rocket_up.png) 0px 0px no-repeat;position:fixed;bottom:0px;right:10px;width:149px;height:260px;cursor: pointer;}
		</style>
	</head>
	<body>
		<div class="one"></div>
		<div id="backtotop" style="display:none;"></div>
	</body>
	<script>
var scrollTT = {
	tTSpeed			:	800, // 滚动到顶部的时间
	startFlyTime	:	1000, // 火箭起飞的时间
	restartTime		:	1200, // 重置火箭位置的时间
	flySpeed		:	50, // 火箭向上飞行的速度
	obj				:	$("#backtotop"), // 回到顶部的dom
	flyTemp			:   '', // 一个setInterval的临时变量
	/**
	* 
	* 初始化 scrollTT 函数
	* 主要是像对象添加事件
	*
	*/
	init			: function( obj, tTSpeed, startFlyTime, restartTime, flySpeed ) {
		scrollTT.tTSpeed		= scrollTT.tTSpeed || tTSpeed;
		scrollTT.startFlyTIme	= scrollTT.startFlyTIme || startFlyTime;
		scrollTT.restartTime	= scrollTT.restartTime || restartTime;
		scrollTT.flySpeed		= scrollTT.flySpeed || flySpeed;
		scrollTT.obj			= scrollTT.obj || obj;
 
		// 向window 绑定scroll 事件
		scrollTT.onScroll();
 
 
		scrollTT.obj.click(function(){
			// 关闭默认的scroll事件
			$(window).off("scroll");
			// 页面向上滚动
			$('html,body').animate({scrollTop: '0px'}, this.tTSpeed);
			// 火箭向上飞行
			scrollTT.objFly();
			// 火箭的喷气效果
			scrollTT.blow();
 
		});
 
		// 鼠标在火箭上的效果
		scrollTT.obj.mouseenter(function() {
			$(this).css('background-position', '-149px 0px');
		});
		// 鼠标移开的效果
		scrollTT.obj.mouseleave(function() {
			$(this).css('background-position', '0px 0px');
		});
 
	},	
	/*
	* 向window 绑定scroll 事件
	*
	*/
	onScroll : function() {
		$(window).on('scroll', function() {
			if ($(window).scrollTop()>500){
				scrollTT.obj.fadeIn(500);
			}else{
				scrollTT.obj.fadeOut(1500);
			}
		});
	},
	/**
	* dom对象向上飞行
	*
	*/
	objFly : function() {
		var fly = setTimeout(function(){
			scrollTT.obj.animate({top: '-500px'} ,'normal', 'swing');
			scrollTT.resetFly();
			clearTimeout(fly);
			clearInterval(scrollTT.flyTemp);
		}, scrollTT.startFlyTime);
	},
	/**
	* dom 对象飞行完毕回到原来的位置
	*
	*/
	resetFly : function() {
			var fly2 = setTimeout(function() {
				scrollTT.obj.hide();
				scrollTT.obj.css("top", 'auto');
				scrollTT.obj.css("background-position", '0px 0px');
				scrollTT.onScroll();
				clearTimeout(fly2);
			},scrollTT.restartTime);
		},
	/**
	* dom 对象的喷气效果
	*
	*/
	blow : function() {
		var topPosiiton = -149;
		scrollTT.flyTemp = setInterval(function() {
			topPosiiton += -149;
			if(topPosiiton < -743) {
				topPosiiton = -149
			}
			scrollTT.obj.css('background-position', topPosiiton + 'px 0px');
		}, this.flySpeed);
	}
};
 
scrollTT.init();
 
	</script>
</html>

暂时木有评论啊,等您坐沙发呢!

打破沉默,我来发表评论鸟~