-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.mk_slideshow.js
117 lines (97 loc) · 2.74 KB
/
jquery.mk_slideshow.js
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
/* $.mk_slideshow
****************************************************************************
// フェードイン・フェードアウトのスライドショー
-----------------------------------------------------------------------
varsion : 1.1.1
author : http://www.makinokobo.com - oosugi
last update : 2010.11.16 - oosugi
Copyright : Copyright (c) 2010 Skill Partners Inc. All Rights Reserved.
-----------------------------------------------------------------------
// Use Defalt
=======================================================================
$('SELECTOR').mk_slideShow();
Defalt Setting is...
---------------------------------------------
startTime: 5000
speed: 2000
putTime: 800
interval: 8000
// Use Config
=======================================================================
$('SELECTOR').mk_slideShow({
startTime: 5000,
speed: 2000,
putTime: 2000,
interval: 8000
});
****************************************************************************/
(function(){
$.fn.mk_slideShow = function(config){
// Default Config
config = $.extend({
startTime: 5000,
speed: 2000,
putTime: 2000,
interval: 8000
},config);
this.each(function(){
// Elements
var $container = $(this);
var $items = $container.children();
var $itemFirst = $items.filter(':first');
var $item = $items.find('img');
// Values
var itemsSize = $items.size();
var maxHeight = 0;
var maxWidth = 0;
$items.each(function(){
maxHeight = Math.max(maxHeight,$(this).height());
maxWidth = Math.max(maxWidth,$(this).width());
});
var num = 0;
var startTime = config.startTime;
var speed = config.speed;
var delay = speed - config.putTime;
var interval = speed + (speed - delay) + config.interval;
// CSS Setting
$container.css({
position: 'relative',
width: maxWidth+'px',
height: maxHeight+'px'
});
$items
.css({
position: 'absolute',
width: maxWidth+'px',
height: maxHeight+'px'
})
.each(function(){
$(this).css({
paddingTop: (maxHeight-$(this).find('img').height())/2+'px',
paddingLeft: (maxWidth-$(this).find('img').width())/2+'px'
});
});
// Beginning Display
$items.hide();
$itemFirst.show();
// Roop
var roop = function(){
$items.filter(':eq('+num+')').fadeOut(speed);
if((num+1)==itemsSize){
num = 0;
$itemFirst.delay(delay).fadeIn(speed,function(){
timeout = setTimeout(function(){ roop(); }, interval);
});
}else{
num++;
$items.filter(':eq('+num+')').delay(delay).fadeIn(speed,function(){
timeout = setTimeout(function(){ roop(); }, interval);
});
}
};
// Start
var timeout = setTimeout(function(){ roop(); },startTime);
});
return this;
};
})(jQuery);