openatc-components 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/.babelrc +18 -18
  2. package/.editorconfig +9 -9
  3. package/.eslintignore +5 -5
  4. package/.eslintrc.js +29 -29
  5. package/.postcssrc.js +10 -10
  6. package/README.md +30 -30
  7. package/build/build.js +41 -41
  8. package/build/check-versions.js +54 -54
  9. package/build/package.config.js +58 -58
  10. package/build/package.dev.config.js +25 -25
  11. package/build/package.prod.config.js +60 -60
  12. package/build/utils.js +101 -101
  13. package/build/vue-loader.conf.js +22 -22
  14. package/build/webpack.base.conf.js +109 -109
  15. package/build/webpack.dev.conf.js +95 -95
  16. package/build/webpack.prod.conf.js +149 -149
  17. package/config/dev.env.js +7 -7
  18. package/config/index.js +76 -76
  19. package/config/prod.env.js +4 -4
  20. package/config/test.env.js +7 -7
  21. package/index.html +12 -12
  22. package/package/kisscomps/components/CircleMenu/KissCircleMenu.vue +398 -398
  23. package/package/kisscomps/components/CircleMenu/index.js +2 -2
  24. package/package/kisscomps/components/DashBoard/MakeGradientColor.js +84 -84
  25. package/package/kisscomps/components/DashBoard/dashboard.js +471 -471
  26. package/package/kisscomps/components/DashBoard/dashboard.vue +57 -57
  27. package/package/kisscomps/components/DashBoard/index.js +2 -2
  28. package/package/kisscomps/components/Horizontal/KissHorizontal.vue +146 -146
  29. package/package/kisscomps/components/Horizontal/index.js +2 -2
  30. package/package/kisscomps/components/HorizontalChildren/KissHorizontalChildren.vue +196 -196
  31. package/package/kisscomps/components/HorizontalChildren/index.js +2 -2
  32. package/package/kisscomps/components/KissCircleMenu/CircleMenu.vue +113 -113
  33. package/package/kisscomps/components/KissCircleMenu/index.js +2 -2
  34. package/package/kisscomps/components/KissCircleMenu/style/index.less +1 -1
  35. package/package/kisscomps/components/KissCircleMenu/style/main/core.less +161 -161
  36. package/package/kisscomps/components/KissCircleMenu/style/main/other.less +94 -94
  37. package/package/kisscomps/components/KissCircleMenu/style/mixin/mixin.less +36 -36
  38. package/package/kisscomps/components/KissCircleMenu/style/var/var.less +21 -21
  39. package/package/kisscomps/components/KissCircleMenu/utils/colorRE.js +5 -5
  40. package/package/kisscomps/components/KissMessageBox/KissMessageBox.vue +108 -108
  41. package/package/kisscomps/components/KissMessageBox/index.js +2 -2
  42. package/package/kisscomps/components/KissSearchInput/index.js +2 -2
  43. package/package/kisscomps/components/KissSearchInput/kisssearchinput.vue +77 -77
  44. package/package/kisscomps/components/KissSimulationProgress/KissSimulationProgress.vue +294 -294
  45. package/package/kisscomps/components/KissSimulationProgress/index.js +2 -2
  46. package/package/kisscomps/components/StatusBar/StatusBar.vue +222 -222
  47. package/package/kisscomps/components/StatusBar/index.js +2 -2
  48. package/package/kisscomps/components/TragResize/index.js +2 -2
  49. package/package/kisscomps/components/TragResize/kissdragresize.vue +536 -536
  50. package/package/kisscomps/components/TragResize/util/dom.js +23 -23
  51. package/package/kisscomps/components/TragResize/util/fns.js +3 -3
  52. package/package/kisscomps/components/XRDDirSelector/XRDDirSelector.1.vue +320 -320
  53. package/package/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +345 -345
  54. package/package/kisscomps/components/XRDDirSelector/index.js +2 -2
  55. package/package/kisscomps/components/button/index.js +2 -2
  56. package/package/kisscomps/components/button/kissbutton.vue +168 -168
  57. package/package/kisscomps/components/compass3D/compass.vue +180 -180
  58. package/package/kisscomps/components/compass3D/index.js +2 -2
  59. package/package/kisscomps/components/header/index.js +2 -2
  60. package/package/kisscomps/components/header/kissHead.vue +83 -83
  61. package/package/kisscomps/components/horizontalMenu/index.js +2 -2
  62. package/package/kisscomps/components/horizontalMenu/kissHorizontalMenu.vue +254 -254
  63. package/package/kisscomps/components/input/index.js +2 -2
  64. package/package/kisscomps/components/input/kissinput.vue +57 -57
  65. package/package/kisscomps/components/menu/index.js +2 -2
  66. package/package/kisscomps/components/menu/kissmenu.vue +324 -324
  67. package/package/kisscomps/components/mutipletips/Tdrag.js +585 -585
  68. package/package/kisscomps/components/mutipletips/index.js +2 -2
  69. package/package/kisscomps/components/mutipletips/kissmutipletips.vue +192 -192
  70. package/package/kisscomps/components/panel/index.js +2 -2
  71. package/package/kisscomps/components/panel/kissPanel.vue +151 -151
  72. package/package/kisscomps/components/select/chosen.jquery.min.js +3 -3
  73. package/package/kisscomps/components/select/index.js +2 -2
  74. package/package/kisscomps/components/select/kissselect.vue +527 -527
  75. package/package/kisscomps/components/tablebutton/index.js +2 -2
  76. package/package/kisscomps/components/tablebutton/tablebutton.vue +97 -97
  77. package/package/kisscomps/components/timectrl/KissTimeCtrl.vue +67 -67
  78. package/package/kisscomps/components/timectrl/index.js +2 -2
  79. package/package/kisscomps/components/timectrl/timectrl.css +851 -851
  80. package/package/kisscomps/components/tip/Tdrag.js +585 -585
  81. package/package/kisscomps/components/tip/index.js +2 -2
  82. package/package/kisscomps/components/tip/kisstips.1.vue +154 -154
  83. package/package/kisscomps/components/tip/kisstips.vue +154 -154
  84. package/package/kisscomps/components/tip/kisstips.vue.bak +211 -211
  85. package/package/kisscomps/index.js +71 -71
  86. package/package/kissui.js +203 -203
  87. package/package/kissui.min.js +203 -203
  88. package/package.json +1 -1
  89. package/src/App.vue +25 -25
  90. package/src/kisscomps/components/CircleMenu/KissCircleMenu.vue +398 -398
  91. package/src/kisscomps/components/CircleMenu/index.js +2 -2
  92. package/src/kisscomps/components/DashBoard/MakeGradientColor.js +84 -84
  93. package/src/kisscomps/components/DashBoard/dashboard.js +471 -471
  94. package/src/kisscomps/components/DashBoard/dashboard.vue +57 -57
  95. package/src/kisscomps/components/DashBoard/index.js +2 -2
  96. package/src/kisscomps/components/KissCircleMenu/CircleMenu.vue +113 -113
  97. package/src/kisscomps/components/KissCircleMenu/index.js +2 -2
  98. package/src/kisscomps/components/KissCircleMenu/style/index.less +1 -1
  99. package/src/kisscomps/components/KissCircleMenu/style/main/core.less +161 -161
  100. package/src/kisscomps/components/KissCircleMenu/style/main/other.less +94 -94
  101. package/src/kisscomps/components/KissCircleMenu/style/mixin/mixin.less +36 -36
  102. package/src/kisscomps/components/KissCircleMenu/style/var/var.less +21 -21
  103. package/src/kisscomps/components/KissCircleMenu/utils/colorRE.js +5 -5
  104. package/src/kisscomps/components/KissSearchInput/index.js +2 -2
  105. package/src/kisscomps/components/KissSearchInput/kisssearchinput.vue +77 -77
  106. package/src/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +193 -0
  107. package/src/kisscomps/components/SchemeConfig/index.js +2 -0
  108. package/src/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +214 -0
  109. package/src/kisscomps/components/SchemeConfig/manualControlModal/index.vue +176 -0
  110. package/src/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +294 -0
  111. package/src/kisscomps/components/SchemeConfig/schemeconfig.vue +711 -0
  112. package/src/kisscomps/components/StatusBar/StatusBar.vue +222 -222
  113. package/src/kisscomps/components/StatusBar/index.js +2 -2
  114. package/src/kisscomps/components/TragResize/index.js +2 -2
  115. package/src/kisscomps/components/TragResize/kissdragresize.vue +536 -536
  116. package/src/kisscomps/components/XRDDirSelector/XRDDirSelector.1.vue +320 -320
  117. package/src/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +345 -345
  118. package/src/kisscomps/components/XRDDirSelector/index.js +2 -2
  119. package/src/kisscomps/components/button/index.js +2 -2
  120. package/src/kisscomps/components/button/kissbutton.vue +168 -168
  121. package/src/kisscomps/components/compass3D/compass.vue +180 -180
  122. package/src/kisscomps/components/compass3D/index.js +2 -2
  123. package/src/kisscomps/components/horizontalMenu/index.js +2 -2
  124. package/src/kisscomps/components/horizontalMenu/kissHorizontalMenu.vue +254 -254
  125. package/src/kisscomps/components/input/index.js +2 -2
  126. package/src/kisscomps/components/input/kissinput.vue +57 -57
  127. package/src/kisscomps/components/menu/index.js +2 -2
  128. package/src/kisscomps/components/menu/kissmenu.vue +324 -324
  129. package/src/kisscomps/components/mutipletips/Tdrag.js +585 -585
  130. package/src/kisscomps/components/mutipletips/index.js +2 -2
  131. package/src/kisscomps/components/mutipletips/kissmutipletips.vue +192 -192
  132. package/src/kisscomps/components/select/chosen.jquery.min.js +3 -3
  133. package/src/kisscomps/components/select/index.js +2 -2
  134. package/src/kisscomps/components/select/kissselect.vue +527 -527
  135. package/src/kisscomps/components/timectrl/KissTimeCtrl.vue +67 -67
  136. package/src/kisscomps/components/timectrl/index.js +2 -2
  137. package/src/kisscomps/components/tip/Tdrag.js +585 -585
  138. package/src/kisscomps/components/tip/index.js +2 -2
  139. package/src/kisscomps/components/tip/kisstips.1.vue +154 -154
  140. package/src/kisscomps/components/tip/kisstips.vue +154 -154
  141. package/src/kisscomps/components/tip/kisstips.vue.bak +211 -211
  142. package/src/kisscomps/index.js +73 -71
  143. package/src/main.js +23 -23
  144. package/src/router/index.js +15 -15
  145. package/src/views/home.1.vue +479 -479
  146. package/src/views/home.vue +196 -196
  147. package/test/e2e/custom-assertions/elementCount.js +27 -27
  148. package/test/e2e/nightwatch.conf.js +46 -46
  149. package/test/e2e/runner.js +48 -48
  150. package/test/e2e/specs/test.js +19 -19
  151. package/test/unit/.eslintrc +7 -7
  152. package/test/unit/jest.conf.js +30 -30
  153. package/test/unit/setup.js +3 -3
  154. package/test/unit/specs/HelloWorld.spec.js +11 -11
@@ -1,585 +1,585 @@
1
- /*! Tdrag 0.0.1 */
2
- /**
3
- * Created by Tezml on 2016/5/26
4
- * You can modify my source code, if you have a good idea or a problem can be encountered by e-mail: tezml@tezml.com to find me.
5
- * 如果你想在项目中使用该插件,请不要删除该注释。
6
- */
7
- /* eslint-disable */
8
- ;(function($,window,document,undefined){
9
- jQuery(function() {
10
- //插件制作
11
- $.fn.Tdrag = function (opt) {
12
- var call = {
13
- scope: null,//父级
14
- grid: null,//网格
15
- axis:"all",//上下或者左右
16
- pos:false,//是否记住位置
17
- handle:null,//手柄
18
- moveClass:"tezml",//移动时不换位加的class
19
- dragChange:false,//是否开启拖拽换位
20
- changeMode:"point",//point & sort
21
- cbStart:function(){},//移动前的回调函数
22
- cbMove:function(){},//移动中的回调函数
23
- cbEnd:function(){},//移动结束时候的回调函数
24
- random:false,//是否自动随机排序
25
- randomInput:null,//点击随机排序的按钮
26
- animation_options:{//运动时的参数
27
- duration:800,//每次运动的时间
28
- easing:"ease-out"//移动时的特效,ease-out、ease-in、linear
29
- },
30
- disable:false,//禁止拖拽
31
- disableInput:null//禁止拖拽的按钮
32
- };
33
- var dragfn = new Dragfn(this, opt);
34
- if (opt && $.isEmptyObject(opt) == false) {
35
- dragfn.options = $.extend(call, opt);
36
- } else {
37
- dragfn.options = call;
38
- }
39
- dragfn.firstRandom=true;
40
- var ele = dragfn.$element;
41
- dragfn.pack(ele,false);
42
- if(dragfn.options.randomInput!=null){
43
- $(dragfn.options.randomInput).bind("click",function(){
44
- dragfn.pack(ele,true);
45
- })
46
- }
47
- //加载拓展jquery的函数
48
- dragfn.loadJqueryfn()
49
- };
50
-
51
- //依赖构造函数
52
- var Dragfn = function (ele, opt) {
53
- this.$element = ele;
54
- this.options = opt;
55
- };
56
- //构造函数方法
57
- Dragfn.prototype = {
58
- init: function (obj) {
59
- var self = this;
60
- self.ele=self.$element;
61
- self.handle=$(obj);//手柄
62
- self.options = self.options;
63
- self.disable = self.options.disable;
64
- self._start = false;
65
- self._move = false;
66
- self._end = false;
67
- self.disX = 0;
68
- self.disY = 0;
69
- self.zIndex=1000;
70
- self.moving=false;
71
- self.moves="";
72
-
73
-
74
- //父级
75
- self.box = $.type(self.options.scope)==="string" ? self.options.scope : null;
76
- //手柄
77
- if(self.options.handle!=null){
78
- self.handle=$(obj).find(self.options.handle);
79
- }
80
-
81
- //三个事件
82
- self.handle.on("mousedown", function (ev) {
83
- self.start(ev, obj);
84
- obj.setCapture && obj.setCapture();
85
- return false;
86
- });
87
- if(self.options.dragChange) {
88
- $(obj).on("mousemove", function (ev) {
89
- self.move(ev, obj);
90
- });
91
- $(obj).on("mouseup", function (ev) {
92
- self.end(ev, obj);
93
- });
94
- }else{
95
- $(document).on("mousemove", function (ev) {
96
- self.move(ev, obj);
97
- });
98
- $(document).on("mouseup", function (ev) {
99
- self.end(ev, obj);
100
- });
101
- }
102
- },
103
- //jquery调取函数时候用
104
- loadJqueryfn: function(){
105
- var self=this;
106
- $.extend({
107
- //返回按照index排序的回调函数
108
- sortBox:function(obj){
109
- var arr=[];
110
- for (var s = 0; s < $(obj).length; s++) {
111
- arr.push($(obj).eq(s));
112
- }
113
- for ( var i = 0; i < arr.length; i++) {
114
- for ( var j = i + 1; j < arr.length; j++) {
115
- if(Number(arr[i].attr("index")) > Number(arr[j].attr("index"))){
116
- var temp = arr[i];
117
- arr[i] = arr[j];
118
- arr[j] = temp;
119
- }
120
- }
121
- }
122
- return arr
123
- },
124
- //随机排序函数
125
- randomfn:function(obj){
126
- self.pack($(obj),true);
127
- },
128
- //开启拖拽
129
- disable_open:function(){
130
- self.disable=false;
131
- },
132
- //禁止拖拽
133
- disable_cloose:function(){
134
- self.disable=true;
135
- }
136
- });
137
- },
138
- toDisable: function(){
139
- var self=this;
140
- if(self.options.disableInput!=null){
141
- $(self.options.disableInput).bind("click",function(){
142
- if(self.disable==true){
143
- self.disable=false
144
- }else{
145
- self.disable=true
146
- }
147
- })
148
- }
149
- },
150
- start: function (ev, obj) {
151
- var self = this;
152
- self.moved=obj;
153
- if (self.disable == true) {
154
- return false
155
- }
156
- self._start = true;
157
- var oEvent = ev || event;
158
- self.disX = oEvent.clientX - obj.offsetLeft;
159
- self.disY = oEvent.clientY - obj.offsetTop;
160
- $(obj).css("zIndex",self.zIndex++);
161
- self.options.cbStart();
162
- },
163
- move: function (ev, obj) {
164
- var self = this;
165
- if (self._start != true) {
166
- return false
167
- }
168
- if(obj!=self.moved){
169
- return false
170
- }
171
- self._move = true;
172
- var oEvent = ev || event;
173
- var l = oEvent.clientX - self.disX;
174
- var t = oEvent.clientY - self.disY;
175
- //有父级限制
176
- if (self.box != null) {
177
- var rule = self.collTestBox(obj,self.box);
178
- if (l > rule.lmax) {
179
- l = rule.lmax;
180
- } else if (l < rule.lmin) {
181
- l = rule.lmin;
182
- }
183
- if (t > rule.tmax) {
184
- t = rule.tmax;
185
- } else if (t < rule.tmin) {
186
- t = rule.tmin;
187
- }
188
- }
189
- if(self.options.axis=="all"){
190
- obj.style.left = self.grid(obj, l, t).left + 'px';
191
- obj.style.top = self.grid(obj, l, t).top + 'px';
192
- }else if(self.options.axis=="y"){
193
- obj.style.top = self.grid(obj, l, t).top + 'px';
194
- }else if(self.options.axis=="x"){
195
- obj.style.left = self.grid(obj, l, t).left + 'px';
196
- }
197
- /* if(self.options.changeWhen=="move") {
198
- if (self.options.changeMode == "sort") {
199
- self.sortDrag(obj);
200
- } else if (self.options.changeMode == "point") {
201
- self.pointmoveDrag(obj);
202
- }
203
- }else{
204
- self.moveAddClass(obj);
205
- }*/
206
- if(self.options.pos==true){
207
- self.moveAddClass(obj);
208
- }
209
- self.options.cbMove(obj,self);
210
-
211
- },
212
- end: function (ev, obj) {
213
- var self = this;
214
- if (self._start != true) {
215
- return false
216
- }
217
- if(self.options.changeMode=="sort"&&self.options.pos==true){
218
- self.sortDrag(obj);
219
- }else if(self.options.changeMode=="point"&&self.options.pos==true){
220
- self.pointDrag(obj);
221
- }
222
- if(self.options.pos==true){
223
- self.animation(obj, self.aPos[$(obj).attr("index")]);
224
- }
225
- self.options.cbEnd();
226
- if(self.options.handle!=null){
227
- $(obj).find(self.options.handle).unbind("onmousemove");
228
- $(obj).find(self.options.handle).unbind("onmouseup");
229
- }else{
230
- $(obj).unbind("onmousemove");
231
- $(obj).unbind("onmouseup");
232
- }
233
- obj.releaseCapture && obj.releaseCapture();
234
- self._start = false;
235
-
236
- },
237
- //算父级的宽高
238
- collTestBox: function (obj, obj2) {
239
- var self = this;
240
- var l1 = 0;
241
- var t1 = 0;
242
- var l2 = $(obj2).innerWidth() - $(obj).outerWidth();
243
- var t2 = $(obj2).innerHeight() - $(obj).outerHeight();
244
- return {
245
- lmin: l1,//取的l最小值
246
- tmin: t1,//取的t最小值
247
- lmax: l2,//取的l最大值
248
- tmax: t2//取的t最大值
249
- }
250
-
251
- },
252
- //算父级宽高时候干掉margin
253
- grid: function (obj, l, t) {//cur:[width,height]
254
- var self = this;
255
- var json = {
256
- left: l,
257
- top: t
258
- };
259
- if ($.isArray(self.options.grid) && self.options.grid.length == 2) {
260
- var gx = self.options.grid[0];
261
- var gy = self.options.grid[1];
262
- json.left = Math.floor((l + gx / 2) / gx) * gx;
263
- json.top = Math.floor((t + gy / 2) / gy) * gy;
264
- return json
265
- } else if (self.options.grid == null) {
266
- return json
267
- } else {
268
- console.log("grid参数传递格式错误");
269
- return false
270
- }
271
- },
272
- findNearest: function(obj){
273
- var self=this;
274
- var iMin=new Date().getTime();
275
- var iMinIndex=-1;
276
- var ele=self.ele;
277
- for(var i=0;i<ele.length;i++){
278
- if(obj==ele[i]){
279
- continue;
280
- }
281
- if(self.collTest(obj,ele[i])){
282
- var dis=self.getDis(obj,ele[i]);
283
- if(dis<iMin){
284
- iMin=dis;
285
- iMinIndex=i;
286
- }
287
- }
288
- }
289
- if(iMinIndex==-1){
290
- return null;
291
- }else{
292
- return ele[iMinIndex];
293
- }
294
- },
295
- getDis: function(obj,obj2){
296
- var self=this;
297
- var l1=obj.offsetLeft+obj.offsetWidth/2;
298
- var l2=obj2.offsetLeft+obj2.offsetWidth/2;
299
-
300
- var t1=obj.offsetTop+obj.offsetHeight/2;
301
- var t2=obj2.offsetTop+obj2.offsetHeight/2;
302
-
303
- var a=l2-l1;
304
- var b=t1-t2;
305
-
306
- return Math.sqrt(a*a+b*b);
307
- },
308
- collTest: function(obj,obj2){
309
- var self=this;
310
- var l1=obj.offsetLeft;
311
- var r1=obj.offsetLeft+obj.offsetWidth;
312
- var t1=obj.offsetTop;
313
- var b1=obj.offsetTop+obj.offsetHeight;
314
-
315
- var l2=obj2.offsetLeft;
316
- var r2=obj2.offsetLeft+obj2.offsetWidth;
317
- var t2=obj2.offsetTop;
318
- var b2=obj2.offsetTop+obj2.offsetHeight;
319
-
320
- if(r1<l2 || r2<l1 || t2>b1 || b2<t1){
321
- return false;
322
- }else{
323
- return true;
324
- }
325
- },
326
- //初始布局转换
327
- pack: function(ele,click){
328
- var self=this;
329
- self.toDisable();
330
- if(self.options.pos==false){
331
- for (var i = 0; i < ele.length; i++) {
332
- $(ele[i]).css("position", "absolute");
333
- $(ele[i]).css("margin", "0");
334
- self.init(ele[i]);
335
- }
336
- }else if(self.options.pos==true) {
337
- var arr = [];
338
- if (self.options.random || click) {
339
- while (arr.length < ele.length) {
340
- var n = self.rnd(0, ele.length);
341
- if (!self.finInArr(arr, n)) {//没找到
342
- arr.push(n);
343
- }
344
- }
345
- }
346
- if (self.options.random == false || click != true) {
347
- var n = 0;
348
- while (arr.length < ele.length) {
349
- arr.push(n);
350
- n++
351
- }
352
- }
353
-
354
- //如果是第二次以后随机列表,那就重新排序后再随机,因为我智商不够使,不会排了
355
- if (self.firstRandom == false) {
356
- var sortarr = [];
357
- var n = 0;
358
- while (sortarr.length < ele.length) {
359
- sortarr.push(n);
360
- n++
361
- }
362
- for (var i = 0; i < ele.length; i++) {
363
- $(ele[i]).attr("index", sortarr[i]);
364
- $(ele[i]).css("left", self.aPos[sortarr[i]].left);
365
- $(ele[i]).css("top", self.aPos[sortarr[i]].top);
366
- }
367
- }
368
-
369
- //布局转化
370
- self.aPos = [];
371
- if (self.firstRandom == false) {
372
- //不是第一次
373
- for (var j = 0; j < ele.length; j++) {
374
- self.aPos[j] = {
375
- left: ele[$(ele).eq(j).attr("index")].offsetLeft,
376
- top: ele[$(ele).eq(j).attr("index")].offsetTop
377
- };
378
- }
379
- } else {
380
- //第一次
381
- for (var j = 0; j < ele.length; j++) {
382
- self.aPos[j] = {left: ele[j].offsetLeft, top: ele[j].offsetTop};
383
- }
384
- }
385
- //第二个循环布局转化
386
- for (var i = 0; i < ele.length; i++) {
387
- $(ele[i]).attr("index", arr[i]);
388
- $(ele[i]).css("left", self.aPos[arr[i]].left);
389
- $(ele[i]).css("top", self.aPos[arr[i]].top);
390
- $(ele[i]).css("position", "absolute");
391
- $(ele[i]).css("margin", "0");
392
- self.init(ele[i]);
393
- }
394
- self.firstRandom = false;
395
- }
396
- },
397
- //移动时候加class
398
- moveAddClass: function(obj){
399
- var self=this;
400
- var oNear=self.findNearest(obj);
401
- $(self.$element).removeClass(self.options.moveClass);
402
- if(oNear && $(oNear).hasClass(self.options.moveClass)==false){
403
- $(oNear).addClass(self.options.moveClass);
404
- }
405
-
406
- },
407
- //给li排序
408
- sort: function(){
409
- var self=this;
410
- var arr_li=[];
411
- for (var s = 0; s < self.$element.length; s++) {
412
- arr_li.push(self.$element[s]);
413
- }
414
- for ( var i = 0; i < arr_li.length; i++) {
415
- for ( var j = i + 1; j < arr_li.length; j++) {
416
- if(Number($(arr_li[i]).attr("index")) > Number($(arr_li[j]).attr("index"))){
417
- var temp = arr_li[i];
418
- arr_li[i] = arr_li[j];
419
- arr_li[j] = temp;
420
- }
421
- }
422
- }
423
- return arr_li;
424
- },
425
- //点对点的方式换位
426
- pointDrag: function(obj){
427
- var self=this;
428
- //先拍序
429
- var oNear=self.findNearest(obj);
430
- if (oNear) {
431
- self.animation(obj,self.aPos[$(oNear).attr("index")]);
432
- self.animation(oNear, self.aPos[$(obj).attr("index")]);
433
- var tmp;
434
- tmp = $(obj).attr("index");
435
- $(obj).attr("index", $(oNear).attr("index"));
436
- $(oNear).attr("index", tmp);
437
- $(oNear).removeClass(self.options.moveClass);
438
- } else if (self.options.changeWhen == "end") {
439
- self.animation(obj, self.aPos[$(obj).attr("index")]);
440
- }
441
-
442
- },
443
- //排序的方式换位
444
- sortDrag: function(obj){
445
- var self=this;
446
- //先拍序
447
- var arr_li=self.sort();
448
- //换位置
449
- var oNear=self.findNearest(obj);
450
- if(oNear){
451
- if(Number($(oNear).attr("index"))>Number($(obj).attr("index"))){
452
- //前换后
453
- var obj_tmp=Number($(obj).attr("index"));
454
- $(obj).attr("index",Number($(oNear).attr("index"))+1);
455
- for (var i = obj_tmp; i < Number($(oNear).attr("index"))+1; i++) {
456
- self.animation(arr_li[i],self.aPos[i-1]);
457
- self.animation(obj,self.aPos[$(oNear).attr("index")]);
458
- $(arr_li[i]).removeClass(self.options.moveClass);
459
- $(arr_li[i]).attr("index",Number($(arr_li[i]).attr("index"))-1);
460
- }
461
-
462
- }else if(Number($(obj).attr("index"))>Number($(oNear).attr("index"))){
463
- //后换前
464
- var obj_tmp=Number($(obj).attr("index"));
465
- $(obj).attr("index",$(oNear).attr("index"));
466
- for (var i = Number($(oNear).attr("index")); i < obj_tmp; i++) {
467
- self.animation(arr_li[i],self.aPos[i+1]);
468
- self.animation(obj,self.aPos[Number($(obj).attr("index"))]);
469
- $(arr_li[i]).removeClass(self.options.moveClass);
470
- $(arr_li[i]).attr("index",Number($(arr_li[i]).attr("index"))+1);
471
- }
472
- }
473
- }else{
474
- self.animation(obj,self.aPos[$(obj).attr("index")]);
475
- }
476
-
477
- },
478
- //运动函数(后期再加参数)
479
- animation: function(obj,json){
480
- var self=this;
481
- //考虑默认值
482
- var options=self.options.animation_options; /*|| {};
483
- options.duration=self.options.animation_options.duration || 800;
484
- options.easing=options.easing.duration.easing || 'ease-out';*/
485
- var self=this;
486
- var count=Math.round(options.duration/30);
487
- var start={};
488
- var dis={};
489
- for(var name in json){
490
- start[name]=parseFloat(self.getStyle(obj,name));
491
- if(isNaN(start[name])){
492
- switch(name){
493
- case 'left':
494
- start[name]=obj.offsetLeft;
495
- break;
496
- case 'top':
497
- start[name]=obj.offsetTop;
498
- break;
499
- case 'width':
500
- start[name]=obj.offsetWidth;
501
- break;
502
- case 'height':
503
- start[name]=obj.offsetHeight;
504
- break;
505
- case 'marginLeft':
506
- start[name]=obj.offsetLeft;
507
- break;
508
- case 'borderWidth':
509
- start[name]=0;
510
- break;
511
- //...
512
- }
513
- }
514
- dis[name]=json[name]-start[name];
515
- }
516
-
517
- var n=0;
518
-
519
- clearInterval(obj.timer);
520
- obj.timer=setInterval(function(){
521
- n++;
522
- for(var name in json){
523
- switch(options.easing){
524
- case 'linear':
525
- var a=n/count;
526
- var cur=start[name]+dis[name]*a;
527
- break;
528
- case 'ease-in':
529
- var a=n/count;
530
- var cur=start[name]+dis[name]*a*a*a;
531
- break;
532
- case 'ease-out':
533
- var a=1-n/count;
534
- var cur=start[name]+dis[name]*(1-a*a*a);
535
- break;
536
- }
537
-
538
- if(name=='opacity'){
539
- obj.style.opacity=cur;
540
- obj.style.filter='alpha(opacity:'+cur*100+')';
541
- }else{
542
- obj.style[name]=cur+'px';
543
- }
544
- }
545
-
546
- if(n==count){
547
- clearInterval(obj.timer);
548
- options.complete && options.complete();
549
- }
550
- },30);
551
- },
552
- getStyle: function(obj,name){
553
- return (obj.currentStyle || getComputedStyle(obj,false))[name];
554
- },
555
- //随机数
556
- rnd: function(n,m){
557
- return parseInt(Math.random()*(m-n)+n);
558
- },
559
- //在数组中找
560
- finInArr: function(arr,n){
561
- for(var i = 0 ; i < arr.length; i++){
562
- if(arr[i] == n){//存在
563
- return true;
564
- }
565
- }
566
- return false;
567
- }
568
- }
569
- })
570
- })(jQuery,window,document);
571
-
572
-
573
-
574
-
575
-
576
-
577
-
578
-
579
-
580
-
581
-
582
-
583
-
584
-
585
-
1
+ /*! Tdrag 0.0.1 */
2
+ /**
3
+ * Created by Tezml on 2016/5/26
4
+ * You can modify my source code, if you have a good idea or a problem can be encountered by e-mail: tezml@tezml.com to find me.
5
+ * 如果你想在项目中使用该插件,请不要删除该注释。
6
+ */
7
+ /* eslint-disable */
8
+ ;(function($,window,document,undefined){
9
+ jQuery(function() {
10
+ //插件制作
11
+ $.fn.Tdrag = function (opt) {
12
+ var call = {
13
+ scope: null,//父级
14
+ grid: null,//网格
15
+ axis:"all",//上下或者左右
16
+ pos:false,//是否记住位置
17
+ handle:null,//手柄
18
+ moveClass:"tezml",//移动时不换位加的class
19
+ dragChange:false,//是否开启拖拽换位
20
+ changeMode:"point",//point & sort
21
+ cbStart:function(){},//移动前的回调函数
22
+ cbMove:function(){},//移动中的回调函数
23
+ cbEnd:function(){},//移动结束时候的回调函数
24
+ random:false,//是否自动随机排序
25
+ randomInput:null,//点击随机排序的按钮
26
+ animation_options:{//运动时的参数
27
+ duration:800,//每次运动的时间
28
+ easing:"ease-out"//移动时的特效,ease-out、ease-in、linear
29
+ },
30
+ disable:false,//禁止拖拽
31
+ disableInput:null//禁止拖拽的按钮
32
+ };
33
+ var dragfn = new Dragfn(this, opt);
34
+ if (opt && $.isEmptyObject(opt) == false) {
35
+ dragfn.options = $.extend(call, opt);
36
+ } else {
37
+ dragfn.options = call;
38
+ }
39
+ dragfn.firstRandom=true;
40
+ var ele = dragfn.$element;
41
+ dragfn.pack(ele,false);
42
+ if(dragfn.options.randomInput!=null){
43
+ $(dragfn.options.randomInput).bind("click",function(){
44
+ dragfn.pack(ele,true);
45
+ })
46
+ }
47
+ //加载拓展jquery的函数
48
+ dragfn.loadJqueryfn()
49
+ };
50
+
51
+ //依赖构造函数
52
+ var Dragfn = function (ele, opt) {
53
+ this.$element = ele;
54
+ this.options = opt;
55
+ };
56
+ //构造函数方法
57
+ Dragfn.prototype = {
58
+ init: function (obj) {
59
+ var self = this;
60
+ self.ele=self.$element;
61
+ self.handle=$(obj);//手柄
62
+ self.options = self.options;
63
+ self.disable = self.options.disable;
64
+ self._start = false;
65
+ self._move = false;
66
+ self._end = false;
67
+ self.disX = 0;
68
+ self.disY = 0;
69
+ self.zIndex=1000;
70
+ self.moving=false;
71
+ self.moves="";
72
+
73
+
74
+ //父级
75
+ self.box = $.type(self.options.scope)==="string" ? self.options.scope : null;
76
+ //手柄
77
+ if(self.options.handle!=null){
78
+ self.handle=$(obj).find(self.options.handle);
79
+ }
80
+
81
+ //三个事件
82
+ self.handle.on("mousedown", function (ev) {
83
+ self.start(ev, obj);
84
+ obj.setCapture && obj.setCapture();
85
+ return false;
86
+ });
87
+ if(self.options.dragChange) {
88
+ $(obj).on("mousemove", function (ev) {
89
+ self.move(ev, obj);
90
+ });
91
+ $(obj).on("mouseup", function (ev) {
92
+ self.end(ev, obj);
93
+ });
94
+ }else{
95
+ $(document).on("mousemove", function (ev) {
96
+ self.move(ev, obj);
97
+ });
98
+ $(document).on("mouseup", function (ev) {
99
+ self.end(ev, obj);
100
+ });
101
+ }
102
+ },
103
+ //jquery调取函数时候用
104
+ loadJqueryfn: function(){
105
+ var self=this;
106
+ $.extend({
107
+ //返回按照index排序的回调函数
108
+ sortBox:function(obj){
109
+ var arr=[];
110
+ for (var s = 0; s < $(obj).length; s++) {
111
+ arr.push($(obj).eq(s));
112
+ }
113
+ for ( var i = 0; i < arr.length; i++) {
114
+ for ( var j = i + 1; j < arr.length; j++) {
115
+ if(Number(arr[i].attr("index")) > Number(arr[j].attr("index"))){
116
+ var temp = arr[i];
117
+ arr[i] = arr[j];
118
+ arr[j] = temp;
119
+ }
120
+ }
121
+ }
122
+ return arr
123
+ },
124
+ //随机排序函数
125
+ randomfn:function(obj){
126
+ self.pack($(obj),true);
127
+ },
128
+ //开启拖拽
129
+ disable_open:function(){
130
+ self.disable=false;
131
+ },
132
+ //禁止拖拽
133
+ disable_cloose:function(){
134
+ self.disable=true;
135
+ }
136
+ });
137
+ },
138
+ toDisable: function(){
139
+ var self=this;
140
+ if(self.options.disableInput!=null){
141
+ $(self.options.disableInput).bind("click",function(){
142
+ if(self.disable==true){
143
+ self.disable=false
144
+ }else{
145
+ self.disable=true
146
+ }
147
+ })
148
+ }
149
+ },
150
+ start: function (ev, obj) {
151
+ var self = this;
152
+ self.moved=obj;
153
+ if (self.disable == true) {
154
+ return false
155
+ }
156
+ self._start = true;
157
+ var oEvent = ev || event;
158
+ self.disX = oEvent.clientX - obj.offsetLeft;
159
+ self.disY = oEvent.clientY - obj.offsetTop;
160
+ $(obj).css("zIndex",self.zIndex++);
161
+ self.options.cbStart();
162
+ },
163
+ move: function (ev, obj) {
164
+ var self = this;
165
+ if (self._start != true) {
166
+ return false
167
+ }
168
+ if(obj!=self.moved){
169
+ return false
170
+ }
171
+ self._move = true;
172
+ var oEvent = ev || event;
173
+ var l = oEvent.clientX - self.disX;
174
+ var t = oEvent.clientY - self.disY;
175
+ //有父级限制
176
+ if (self.box != null) {
177
+ var rule = self.collTestBox(obj,self.box);
178
+ if (l > rule.lmax) {
179
+ l = rule.lmax;
180
+ } else if (l < rule.lmin) {
181
+ l = rule.lmin;
182
+ }
183
+ if (t > rule.tmax) {
184
+ t = rule.tmax;
185
+ } else if (t < rule.tmin) {
186
+ t = rule.tmin;
187
+ }
188
+ }
189
+ if(self.options.axis=="all"){
190
+ obj.style.left = self.grid(obj, l, t).left + 'px';
191
+ obj.style.top = self.grid(obj, l, t).top + 'px';
192
+ }else if(self.options.axis=="y"){
193
+ obj.style.top = self.grid(obj, l, t).top + 'px';
194
+ }else if(self.options.axis=="x"){
195
+ obj.style.left = self.grid(obj, l, t).left + 'px';
196
+ }
197
+ /* if(self.options.changeWhen=="move") {
198
+ if (self.options.changeMode == "sort") {
199
+ self.sortDrag(obj);
200
+ } else if (self.options.changeMode == "point") {
201
+ self.pointmoveDrag(obj);
202
+ }
203
+ }else{
204
+ self.moveAddClass(obj);
205
+ }*/
206
+ if(self.options.pos==true){
207
+ self.moveAddClass(obj);
208
+ }
209
+ self.options.cbMove(obj,self);
210
+
211
+ },
212
+ end: function (ev, obj) {
213
+ var self = this;
214
+ if (self._start != true) {
215
+ return false
216
+ }
217
+ if(self.options.changeMode=="sort"&&self.options.pos==true){
218
+ self.sortDrag(obj);
219
+ }else if(self.options.changeMode=="point"&&self.options.pos==true){
220
+ self.pointDrag(obj);
221
+ }
222
+ if(self.options.pos==true){
223
+ self.animation(obj, self.aPos[$(obj).attr("index")]);
224
+ }
225
+ self.options.cbEnd();
226
+ if(self.options.handle!=null){
227
+ $(obj).find(self.options.handle).unbind("onmousemove");
228
+ $(obj).find(self.options.handle).unbind("onmouseup");
229
+ }else{
230
+ $(obj).unbind("onmousemove");
231
+ $(obj).unbind("onmouseup");
232
+ }
233
+ obj.releaseCapture && obj.releaseCapture();
234
+ self._start = false;
235
+
236
+ },
237
+ //算父级的宽高
238
+ collTestBox: function (obj, obj2) {
239
+ var self = this;
240
+ var l1 = 0;
241
+ var t1 = 0;
242
+ var l2 = $(obj2).innerWidth() - $(obj).outerWidth();
243
+ var t2 = $(obj2).innerHeight() - $(obj).outerHeight();
244
+ return {
245
+ lmin: l1,//取的l最小值
246
+ tmin: t1,//取的t最小值
247
+ lmax: l2,//取的l最大值
248
+ tmax: t2//取的t最大值
249
+ }
250
+
251
+ },
252
+ //算父级宽高时候干掉margin
253
+ grid: function (obj, l, t) {//cur:[width,height]
254
+ var self = this;
255
+ var json = {
256
+ left: l,
257
+ top: t
258
+ };
259
+ if ($.isArray(self.options.grid) && self.options.grid.length == 2) {
260
+ var gx = self.options.grid[0];
261
+ var gy = self.options.grid[1];
262
+ json.left = Math.floor((l + gx / 2) / gx) * gx;
263
+ json.top = Math.floor((t + gy / 2) / gy) * gy;
264
+ return json
265
+ } else if (self.options.grid == null) {
266
+ return json
267
+ } else {
268
+ console.log("grid参数传递格式错误");
269
+ return false
270
+ }
271
+ },
272
+ findNearest: function(obj){
273
+ var self=this;
274
+ var iMin=new Date().getTime();
275
+ var iMinIndex=-1;
276
+ var ele=self.ele;
277
+ for(var i=0;i<ele.length;i++){
278
+ if(obj==ele[i]){
279
+ continue;
280
+ }
281
+ if(self.collTest(obj,ele[i])){
282
+ var dis=self.getDis(obj,ele[i]);
283
+ if(dis<iMin){
284
+ iMin=dis;
285
+ iMinIndex=i;
286
+ }
287
+ }
288
+ }
289
+ if(iMinIndex==-1){
290
+ return null;
291
+ }else{
292
+ return ele[iMinIndex];
293
+ }
294
+ },
295
+ getDis: function(obj,obj2){
296
+ var self=this;
297
+ var l1=obj.offsetLeft+obj.offsetWidth/2;
298
+ var l2=obj2.offsetLeft+obj2.offsetWidth/2;
299
+
300
+ var t1=obj.offsetTop+obj.offsetHeight/2;
301
+ var t2=obj2.offsetTop+obj2.offsetHeight/2;
302
+
303
+ var a=l2-l1;
304
+ var b=t1-t2;
305
+
306
+ return Math.sqrt(a*a+b*b);
307
+ },
308
+ collTest: function(obj,obj2){
309
+ var self=this;
310
+ var l1=obj.offsetLeft;
311
+ var r1=obj.offsetLeft+obj.offsetWidth;
312
+ var t1=obj.offsetTop;
313
+ var b1=obj.offsetTop+obj.offsetHeight;
314
+
315
+ var l2=obj2.offsetLeft;
316
+ var r2=obj2.offsetLeft+obj2.offsetWidth;
317
+ var t2=obj2.offsetTop;
318
+ var b2=obj2.offsetTop+obj2.offsetHeight;
319
+
320
+ if(r1<l2 || r2<l1 || t2>b1 || b2<t1){
321
+ return false;
322
+ }else{
323
+ return true;
324
+ }
325
+ },
326
+ //初始布局转换
327
+ pack: function(ele,click){
328
+ var self=this;
329
+ self.toDisable();
330
+ if(self.options.pos==false){
331
+ for (var i = 0; i < ele.length; i++) {
332
+ $(ele[i]).css("position", "absolute");
333
+ $(ele[i]).css("margin", "0");
334
+ self.init(ele[i]);
335
+ }
336
+ }else if(self.options.pos==true) {
337
+ var arr = [];
338
+ if (self.options.random || click) {
339
+ while (arr.length < ele.length) {
340
+ var n = self.rnd(0, ele.length);
341
+ if (!self.finInArr(arr, n)) {//没找到
342
+ arr.push(n);
343
+ }
344
+ }
345
+ }
346
+ if (self.options.random == false || click != true) {
347
+ var n = 0;
348
+ while (arr.length < ele.length) {
349
+ arr.push(n);
350
+ n++
351
+ }
352
+ }
353
+
354
+ //如果是第二次以后随机列表,那就重新排序后再随机,因为我智商不够使,不会排了
355
+ if (self.firstRandom == false) {
356
+ var sortarr = [];
357
+ var n = 0;
358
+ while (sortarr.length < ele.length) {
359
+ sortarr.push(n);
360
+ n++
361
+ }
362
+ for (var i = 0; i < ele.length; i++) {
363
+ $(ele[i]).attr("index", sortarr[i]);
364
+ $(ele[i]).css("left", self.aPos[sortarr[i]].left);
365
+ $(ele[i]).css("top", self.aPos[sortarr[i]].top);
366
+ }
367
+ }
368
+
369
+ //布局转化
370
+ self.aPos = [];
371
+ if (self.firstRandom == false) {
372
+ //不是第一次
373
+ for (var j = 0; j < ele.length; j++) {
374
+ self.aPos[j] = {
375
+ left: ele[$(ele).eq(j).attr("index")].offsetLeft,
376
+ top: ele[$(ele).eq(j).attr("index")].offsetTop
377
+ };
378
+ }
379
+ } else {
380
+ //第一次
381
+ for (var j = 0; j < ele.length; j++) {
382
+ self.aPos[j] = {left: ele[j].offsetLeft, top: ele[j].offsetTop};
383
+ }
384
+ }
385
+ //第二个循环布局转化
386
+ for (var i = 0; i < ele.length; i++) {
387
+ $(ele[i]).attr("index", arr[i]);
388
+ $(ele[i]).css("left", self.aPos[arr[i]].left);
389
+ $(ele[i]).css("top", self.aPos[arr[i]].top);
390
+ $(ele[i]).css("position", "absolute");
391
+ $(ele[i]).css("margin", "0");
392
+ self.init(ele[i]);
393
+ }
394
+ self.firstRandom = false;
395
+ }
396
+ },
397
+ //移动时候加class
398
+ moveAddClass: function(obj){
399
+ var self=this;
400
+ var oNear=self.findNearest(obj);
401
+ $(self.$element).removeClass(self.options.moveClass);
402
+ if(oNear && $(oNear).hasClass(self.options.moveClass)==false){
403
+ $(oNear).addClass(self.options.moveClass);
404
+ }
405
+
406
+ },
407
+ //给li排序
408
+ sort: function(){
409
+ var self=this;
410
+ var arr_li=[];
411
+ for (var s = 0; s < self.$element.length; s++) {
412
+ arr_li.push(self.$element[s]);
413
+ }
414
+ for ( var i = 0; i < arr_li.length; i++) {
415
+ for ( var j = i + 1; j < arr_li.length; j++) {
416
+ if(Number($(arr_li[i]).attr("index")) > Number($(arr_li[j]).attr("index"))){
417
+ var temp = arr_li[i];
418
+ arr_li[i] = arr_li[j];
419
+ arr_li[j] = temp;
420
+ }
421
+ }
422
+ }
423
+ return arr_li;
424
+ },
425
+ //点对点的方式换位
426
+ pointDrag: function(obj){
427
+ var self=this;
428
+ //先拍序
429
+ var oNear=self.findNearest(obj);
430
+ if (oNear) {
431
+ self.animation(obj,self.aPos[$(oNear).attr("index")]);
432
+ self.animation(oNear, self.aPos[$(obj).attr("index")]);
433
+ var tmp;
434
+ tmp = $(obj).attr("index");
435
+ $(obj).attr("index", $(oNear).attr("index"));
436
+ $(oNear).attr("index", tmp);
437
+ $(oNear).removeClass(self.options.moveClass);
438
+ } else if (self.options.changeWhen == "end") {
439
+ self.animation(obj, self.aPos[$(obj).attr("index")]);
440
+ }
441
+
442
+ },
443
+ //排序的方式换位
444
+ sortDrag: function(obj){
445
+ var self=this;
446
+ //先拍序
447
+ var arr_li=self.sort();
448
+ //换位置
449
+ var oNear=self.findNearest(obj);
450
+ if(oNear){
451
+ if(Number($(oNear).attr("index"))>Number($(obj).attr("index"))){
452
+ //前换后
453
+ var obj_tmp=Number($(obj).attr("index"));
454
+ $(obj).attr("index",Number($(oNear).attr("index"))+1);
455
+ for (var i = obj_tmp; i < Number($(oNear).attr("index"))+1; i++) {
456
+ self.animation(arr_li[i],self.aPos[i-1]);
457
+ self.animation(obj,self.aPos[$(oNear).attr("index")]);
458
+ $(arr_li[i]).removeClass(self.options.moveClass);
459
+ $(arr_li[i]).attr("index",Number($(arr_li[i]).attr("index"))-1);
460
+ }
461
+
462
+ }else if(Number($(obj).attr("index"))>Number($(oNear).attr("index"))){
463
+ //后换前
464
+ var obj_tmp=Number($(obj).attr("index"));
465
+ $(obj).attr("index",$(oNear).attr("index"));
466
+ for (var i = Number($(oNear).attr("index")); i < obj_tmp; i++) {
467
+ self.animation(arr_li[i],self.aPos[i+1]);
468
+ self.animation(obj,self.aPos[Number($(obj).attr("index"))]);
469
+ $(arr_li[i]).removeClass(self.options.moveClass);
470
+ $(arr_li[i]).attr("index",Number($(arr_li[i]).attr("index"))+1);
471
+ }
472
+ }
473
+ }else{
474
+ self.animation(obj,self.aPos[$(obj).attr("index")]);
475
+ }
476
+
477
+ },
478
+ //运动函数(后期再加参数)
479
+ animation: function(obj,json){
480
+ var self=this;
481
+ //考虑默认值
482
+ var options=self.options.animation_options; /*|| {};
483
+ options.duration=self.options.animation_options.duration || 800;
484
+ options.easing=options.easing.duration.easing || 'ease-out';*/
485
+ var self=this;
486
+ var count=Math.round(options.duration/30);
487
+ var start={};
488
+ var dis={};
489
+ for(var name in json){
490
+ start[name]=parseFloat(self.getStyle(obj,name));
491
+ if(isNaN(start[name])){
492
+ switch(name){
493
+ case 'left':
494
+ start[name]=obj.offsetLeft;
495
+ break;
496
+ case 'top':
497
+ start[name]=obj.offsetTop;
498
+ break;
499
+ case 'width':
500
+ start[name]=obj.offsetWidth;
501
+ break;
502
+ case 'height':
503
+ start[name]=obj.offsetHeight;
504
+ break;
505
+ case 'marginLeft':
506
+ start[name]=obj.offsetLeft;
507
+ break;
508
+ case 'borderWidth':
509
+ start[name]=0;
510
+ break;
511
+ //...
512
+ }
513
+ }
514
+ dis[name]=json[name]-start[name];
515
+ }
516
+
517
+ var n=0;
518
+
519
+ clearInterval(obj.timer);
520
+ obj.timer=setInterval(function(){
521
+ n++;
522
+ for(var name in json){
523
+ switch(options.easing){
524
+ case 'linear':
525
+ var a=n/count;
526
+ var cur=start[name]+dis[name]*a;
527
+ break;
528
+ case 'ease-in':
529
+ var a=n/count;
530
+ var cur=start[name]+dis[name]*a*a*a;
531
+ break;
532
+ case 'ease-out':
533
+ var a=1-n/count;
534
+ var cur=start[name]+dis[name]*(1-a*a*a);
535
+ break;
536
+ }
537
+
538
+ if(name=='opacity'){
539
+ obj.style.opacity=cur;
540
+ obj.style.filter='alpha(opacity:'+cur*100+')';
541
+ }else{
542
+ obj.style[name]=cur+'px';
543
+ }
544
+ }
545
+
546
+ if(n==count){
547
+ clearInterval(obj.timer);
548
+ options.complete && options.complete();
549
+ }
550
+ },30);
551
+ },
552
+ getStyle: function(obj,name){
553
+ return (obj.currentStyle || getComputedStyle(obj,false))[name];
554
+ },
555
+ //随机数
556
+ rnd: function(n,m){
557
+ return parseInt(Math.random()*(m-n)+n);
558
+ },
559
+ //在数组中找
560
+ finInArr: function(arr,n){
561
+ for(var i = 0 ; i < arr.length; i++){
562
+ if(arr[i] == n){//存在
563
+ return true;
564
+ }
565
+ }
566
+ return false;
567
+ }
568
+ }
569
+ })
570
+ })(jQuery,window,document);
571
+
572
+
573
+
574
+
575
+
576
+
577
+
578
+
579
+
580
+
581
+
582
+
583
+
584
+
585
+