PageSourceSearch

http://seeingheart180.com/static/js/rBQBHVsZ3H-EJ8rqAAAAAJHE6pM1612.js

js seeingheart180.com collected 2026-10-07 15:10:23 UTC 6,709 bytes, 260 lines download raw bytes

1/**
2 * jQuery PicCarousel.js 
3 * Version 0.1.4
4 *
5 * https://github.com/javion25/PicCarousel.js
6 * MIT licensed
7 *
8 * Copyright (C) 2015 Javion.com - A project by Javion
9 */
10;(function($){
11
12	//定义PicCarousel类
13	var PicCarousel = (function(){
14
15		//定义PicCarousel的构造函数
16		function PicCarousel(element,options){
17			this.settings = $.extend(true,$.fn.PicCarousel.defaults,options||{});
18			this.element = element;
19			this.init();
20		}
21
22		//定义PicCarousel的方法
23		PicCarousel.prototype = {
24			/*说明:初始化插件*/
25			init:function(){
26				var me = this;
27				me.poster = me.element;
28				me.posterItemMain = me.poster.find("ul.poster-list");
29				me.nextBtn = me.poster.find("div.poster-next-btn"); 
30				me.prevBtn = me.poster.find("div.poster-prev-btn"); 
31				me.posterItems = me.poster.find("li.poster-item");
32
33				if(me.posterItems.size()%2 == 0){
34					me.posterItemMain.append(me.posterItems.ep(0).clone());
35					me.posterItems = me.posterItemMain.children;
36				}
37				
38				me.posterFirstItem = me.posterItems.first();
39				me.posterLastItem = me.posterItems.last();
40				me.rotateFlag =true;
41
42				//设置配置参数值
43				me.setSettingValue();
44				me.setPosterPost();
45
46				me.nextBtn.click(function(){
47					if(me.rotateFlag){
48						me.rotateFlag = false;
49						me.carouseRotate("left");
50					};
51				});
52
53				me.prevBtn.click(function(){
54					if(me.rotateFlag){
55						me.rotateFlag = false;
56						me.carouseRotate("right");
57					};
58				});
59
60				//是否开启自动播放
61				if(me.settings.autoPlay){
62					me.autoPlay();
63					me.poster.hover(function(){
64						window.clearInterval(me.timer);
65					},function(){
66						me.autoPlay();
67					});
68				}
69			},
70
71			//自动播放方法
72			autoPlay:function(){
73				var me = this;
74				me.timer = window.setInterval(function(){
75					me.nextBtn.click();
76				},me.settings.delay);
77			},
78
79			//旋转方法
80			carouseRotate:function(dir){
81				var me = this;
82				var zIndexArr = [];
83				if(dir === "left"){
84					me.posterItems.each(function(){
85						var self = $(this),
86							prev = self.prev().get(0)?self.prev():me.posterLastItem,
87							width = prev.width(),
88							height = prev.height(),
89							zIndex = prev.css("zIndex"),
90							opacity = prev.css("opacity"),
91							left = prev.css("left"),
92							top = prev.css("top");
93							zIndexArr.push(zIndex);
94							self.animate({
95									width:width,
96									height:height,
97									opacity:opacity,
98									left:left,
99									top:top
100							},me.settings.speed,function(){
101								me.rotateFlag = true;
102							});
103					});
104					me.posterItems.each(function(i){
105						$(this).css("zIndex",zIndexArr[i]);
106					})
107				}else if(dir === "right"){
108					me.posterItems.each(function(){
109						var self = $(this),
110							next = self.next().get(0)?self.next():me.posterFirstItem,
111							width = next.width(),
112							height = next.height(),
113							zIndex = next.css("zIndex"),
114							opacity = next.css("opacity"),
115							left = next.css("left"),
116							top = next.css("top");
117							zIndexArr.push(zIndex);
118							self.animate({
119									width:width,
120									height:height,
121									opacity:opacity,
122									left:left,
123									top:top
124							},me.settings.speed,function(){
125								me.rotateFlag = true;
126							});
127					});
128					me.posterItems.each(function(i){
129						$(this).css("zIndex",zIndexArr[i]);
130					})
131				}
132			},
133
134			//设置剩余的帧的位置关系
135			setPosterPost:function(){
136				var me = this;
137				var sliceItems = me.posterItems.slice(1),
138					sliceSize  = sliceItems.size()/2,
139					rightSlice = sliceItems.slice(0,sliceSize),
140					level      = Math.floor(me.posterItems.size()/2),
141					leftSlice  = sliceItems.slice(sliceSize);
142
143				//设置右边帧的位置关系和宽度、高度、top...
144				var rw = me.settings.posterWidth,
145					rh = me.settings.posterHeight,
146					//((容器宽-帧宽)/2)/层级 190
147					gap = ((me.settings.width-me.settings.posterWidth)/2)/level;
148
149				var firstLeft = (me.settings.width-me.settings.posterWidth)/2;
150				var fixOffsetLeft = firstLeft + rw;
151
152				//设置右边的位置关系
153				rightSlice.each(function(i){
154					level--;
155					rw = rw*me.settings.scale;
156					rh = rh*me.settings.scale;
157					var j=i;
158					$(this).css({
159							zIndex:level,
160							width:rw,
161							height:rh,
162							opacity:1/(++j),
163							left:fixOffsetLeft+(++i)*gap-rw,
164							top:me.setVertucalAlign(rh)
165					});
166
167				});
168
169				//设置左边的位置关系
170				var lw = rightSlice.last().width(),
171					lh = rightSlice.last().height(),
172					oloop = Math.floor(me.posterItems.size()/2);
173
174				leftSlice.each(function(i){
175					$(this).css({
176							zIndex:i,
177							width:lw,
178							height:lh,
179							opacity:1/oloop,
180							left:i*gap,
181							top:me.setVertucalAlign(lh)
182					});
183
184					lw = lw/me.settings.scale;
185					lh = lh/me.settings.scale;
186					oloop--;
187				});
188			},
189
190			//设置垂直排列对齐
191			setVertucalAlign:function(height){
192				var me = this;
193				var verticalType = me.settings.verticalAlign,
194					top = 0;
195
196				if(verticalType === "middle"){
197					top = (me.settings.height - height)/2;
198				}else if(verticalType === "top"){
199					top = 0;
200				}else if(verticalType === "bottom"){
201					top = me.settings.height - height;
202				}else{
203					top = (me.settings.height-height)/2;
204				};
205
206				return top;
207			},
208
209			//配置左右按钮和第一帧位置
210			setSettingValue:function(){
211				var me = this;
212				me.poster.css({
213					width:me.settings.width,
214					height:me.settings.height
215				});
216
217				me.posterItemMain.css({
218					width:me.settings.width,
219					height:me.settings.height
220				});
221
222				//计算左右切换按钮的宽度
223				var w = (me.settings.width-me.settings.posterWidth)/2;
224
225				me.nextBtn.css({
226					width:w,
227					height:me.settings.height,
228					zIndex:Math.ceil(me.posterItems.size()/2)
229				});
230				me.prevBtn.css({
231					width:w,
232					height:me.settings.height,
233					zIndex:Math.ceil(me.posterItems.size()/2)
234				});
235				me.posterFirstItem.css({
236					width:me.settings.posterWidth,
237					height:me.settings.posterHeight,
238					top: me.setVertucalAlign(me.settings.posterHeight),
239					left:w,
240					zIndex:Math.floor(me.posterItems.size()/2)
241				});
242			}
243		};
244		return PicCarousel;
245	})();
246
247	//单例模式,添加PicCarousel方法
248	$.fn.PicCarousel = function(options){
249		return this.each(function(){
250			var me = $(this),
251				instance = me.data("PicCarousel");
252			if(!instance){
253				instance = new PicCarousel(me,options);
254				me.data("PicCarousel",instance);
255			}
256		});
257	};
258
259
260}(jQuery));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.