islider.js
上传用户:shjgzm
上传日期:2017-08-31
资源大小:2757k
文件大小:7k
源码类别:

Ajax

开发平台:

Java

  1. /**
  2.  * Interface Elements for jQuery
  3.  * Slider
  4.  * 
  5.  * http://interface.eyecon.ro
  6.  * 
  7.  * Copyright (c) 2006 Stefan Petre
  8.  * Dual licensed under the MIT (MIT-LICENSE.txt) 
  9.  * and GPL (GPL-LICENSE.txt) licenses.
  10.  *   
  11.  *
  12.  */
  13. jQuery.iSlider = {
  14. tabindex : 1,
  15. set : function (values)
  16. {
  17. var values = values;
  18. return this.each(
  19. function()
  20. {
  21. this.slideCfg.sliders.each(
  22. function (key) 
  23. jQuery.iSlider.dragmoveBy(this,values[key]);
  24. }
  25. );
  26. }
  27. );
  28. },
  29. modifyContainer : function (elm)
  30. {
  31. if (elm.SliderContainer.slideCfg.restricted ) {
  32. next = elm.SliderContainer.slideCfg.sliders.get(elm.SliderIteration+1);
  33. if (next) {
  34. elm.dragCfg.cont.w = parseInt(jQuery(next).css('left')) + elm.dragCfg.oC.wb;
  35. elm.dragCfg.cont.h = parseInt(jQuery(next).css('top')) + elm.dragCfg.oC.hb;
  36. }
  37. prev = elm.SliderContainer.slideCfg.sliders.get(elm.SliderIteration-1);
  38. if (prev) {
  39. elm.dragCfg.cont.x += parseInt(jQuery(prev).css('left'));
  40. elm.dragCfg.cont.y += parseInt(jQuery(prev).css('top'));
  41. elm.dragCfg.cont.w -= parseInt(jQuery(prev).css('left'));
  42. elm.dragCfg.cont.h -= parseInt(jQuery(prev).css('top'));
  43. }
  44. }
  45. elm.dragCfg.maxx = elm.dragCfg.cont.w - elm.dragCfg.oC.wb;
  46. elm.dragCfg.maxy = elm.dragCfg.cont.h - elm.dragCfg.oC.hb;
  47. if(elm.dragCfg.fractions) {
  48. elm.dragCfg.gx = ((elm.dragCfg.cont.w - elm.dragCfg.oC.wb)/elm.dragCfg.fractions) || 1;
  49. elm.dragCfg.gy = ((elm.dragCfg.cont.h - elm.dragCfg.oC.hb)/elm.dragCfg.fractions) || 1;
  50. elm.dragCfg.fracW = elm.dragCfg.maxx / elm.dragCfg.fractions;
  51. elm.dragCfg.fracH = elm.dragCfg.maxy / elm.dragCfg.fractions;
  52. }
  53. elm.dragCfg.cont.dx = elm.dragCfg.cont.x - elm.dragCfg.oR.x;
  54. elm.dragCfg.cont.dy = elm.dragCfg.cont.y - elm.dragCfg.oR.y;
  55. jQuery.iDrag.helper.css('cursor', 'default');
  56. },
  57. onSlide : function(elm, x, y)
  58. {
  59. if (elm.dragCfg.fractions) {
  60. xfrac = parseInt(x/elm.dragCfg.fracW);
  61. xproc = xfrac * 100 / elm.dragCfg.fractions;
  62. yfrac = parseInt(y/elm.dragCfg.fracH);
  63. yproc = yfrac * 100 / elm.dragCfg.fractions;
  64. } else {
  65. xproc = parseInt(x * 100 / elm.dragCfg.maxx);
  66. yproc = parseInt(y * 100 / elm.dragCfg.maxy);
  67. }
  68. elm.dragCfg.lastSi = [xproc||0, yproc||0, x||0, y||0];
  69. if (elm.dragCfg.onSlide)
  70. elm.dragCfg.onSlide.apply(elm, elm.dragCfg.lastSi);
  71. },
  72. dragmoveByKey : function (event)
  73. {
  74. pressedKey = event.charCode || event.keyCode || -1;
  75. switch (pressedKey)
  76. {
  77. //end
  78. case 35:
  79. jQuery.iSlider.dragmoveBy(this.dragElem, [2000, 2000] );
  80. break;
  81. //home
  82. case 36:
  83. jQuery.iSlider.dragmoveBy(this.dragElem, [-2000, -2000] );
  84. break;
  85. //left
  86. case 37:
  87. jQuery.iSlider.dragmoveBy(this.dragElem, [-this.dragElem.dragCfg.gx||-1, 0] );
  88. break;
  89. //up
  90. case 38:
  91. jQuery.iSlider.dragmoveBy(this.dragElem, [0, -this.dragElem.dragCfg.gy||-1] );
  92. break;
  93. //right
  94. case 39:
  95. jQuery.iSlider.dragmoveBy(this.dragElem, [this.dragElem.dragCfg.gx||1, 0] );
  96. break;
  97. //down;
  98. case 40:
  99. jQuery.iDrag.dragmoveBy(this.dragElem, [0, this.dragElem.dragCfg.gy||1] );
  100. break;
  101. }
  102. },
  103. dragmoveBy : function (elm, position) 
  104. {
  105. if (!elm.dragCfg) {
  106. return;
  107. }
  108. elm.dragCfg.oC = jQuery.extend(
  109. jQuery.iUtil.getPosition(elm),
  110. jQuery.iUtil.getSize(elm)
  111. );
  112. elm.dragCfg.oR = {
  113. x : parseInt(jQuery.css(elm, 'left'))||0,
  114. y : parseInt(jQuery.css(elm, 'top'))||0
  115. };
  116. elm.dragCfg.oP = jQuery.css(elm, 'position');
  117. if (elm.dragCfg.oP != 'relative' && elm.dragCfg.oP != 'absolute') {
  118. elm.style.position = 'relative';
  119. }
  120. jQuery.iDrag.getContainment(elm);
  121. jQuery.iSlider.modifyContainer(elm);
  122. dx = parseInt(position[0]) || 0;
  123. dy = parseInt(position[1]) || 0;
  124. nx = elm.dragCfg.oR.x + dx;
  125. ny = elm.dragCfg.oR.y + dy;
  126. if(elm.dragCfg.fractions) {
  127. newCoords = jQuery.iDrag.snapToGrid.apply(elm, [nx, ny, dx, dy]);
  128. if (newCoords.constructor == Object) {
  129. dx = newCoords.dx;
  130. dy = newCoords.dy;
  131. }
  132. nx = elm.dragCfg.oR.x + dx;
  133. ny = elm.dragCfg.oR.y + dy;
  134. }
  135. newCoords = jQuery.iDrag.fitToContainer.apply(elm, [nx, ny, dx, dy]);
  136. if (newCoords && newCoords.constructor == Object) {
  137. dx = newCoords.dx;
  138. dy = newCoords.dy;
  139. }
  140. nx = elm.dragCfg.oR.x + dx;
  141. ny = elm.dragCfg.oR.y + dy;
  142. if (elm.dragCfg.si && (elm.dragCfg.onSlide || elm.dragCfg.onChange)) {
  143. jQuery.iSlider.onSlide(elm, nx, ny);
  144. }
  145. nx = !elm.dragCfg.axis || elm.dragCfg.axis == 'horizontally' ? nx : elm.dragCfg.oR.x;
  146. ny = !elm.dragCfg.axis || elm.dragCfg.axis == 'vertically' ? ny : elm.dragCfg.oR.y;
  147. elm.style.left = nx + 'px';
  148. elm.style.top = ny + 'px';
  149. },
  150. build : function(o) {
  151. return this.each(
  152. function()
  153. {
  154. if (this.isSlider == true || !o.accept || !jQuery.iUtil || !jQuery.iDrag || !jQuery.iDrop){
  155. return;
  156. }
  157. toDrag = jQuery(o.accept, this);
  158. if (toDrag.size() == 0) {
  159. return;
  160. }
  161. params = {
  162. containment: 'parent',
  163. si : true,
  164. onSlide : o.onSlide && o.onSlide.constructor == Function ? o.onSlide : null,
  165. onChange : o.onChange && o.onChange.constructor == Function ? o.onChange : null,
  166. handle: this,
  167. opacity: o.opacity||false
  168. };
  169. if (o.fractions && parseInt(o.fractions)) {
  170. params.fractions = parseInt(o.fractions)||1;
  171. params.fractions = params.fractions > 0 ? params.fractions : 1;
  172. }
  173. if (toDrag.size() == 1)
  174. toDrag.Draggable(params);
  175. else {
  176. jQuery(toDrag.get(0)).Draggable(params);
  177. params.handle = null;
  178. toDrag.Draggable(params);
  179. }
  180. toDrag.keydown(jQuery.iSlider.dragmoveByKey);
  181. toDrag.attr('tabindex',jQuery.iSlider.tabindex++);
  182. this.isSlider = true;
  183. this.slideCfg = {};
  184. this.slideCfg.onslide = params.onslide;
  185. this.slideCfg.fractions = params.fractions;
  186. this.slideCfg.sliders = toDrag;
  187. this.slideCfg.restricted = o.restricted ? true : false;
  188. sliderEl = this;
  189. sliderEl.slideCfg.sliders.each(
  190. function(nr)
  191. {
  192. this.SliderIteration = nr;
  193. this.SliderContainer = sliderEl;
  194. }
  195. );
  196. if (o.values && o.values.constructor == Array) {
  197. for (i = o.values.length -1; i>=0;i--) {
  198. if (o.values[i].constructor == Array && o.values[i].length == 2) {
  199. el = this.slideCfg.sliders.get(i);
  200. if (el.tagName) {
  201. jQuery.iSlider.dragmoveBy(el, o.values[i]);
  202. }
  203. }
  204. }
  205. }
  206. }
  207. );
  208. }
  209. };
  210. jQuery.fn.extend(
  211. {
  212. Slider : jQuery.iSlider.build,
  213. SliderSetValues : jQuery.iSlider.set
  214. }
  215. );