TouchSlide.1.1.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. var TouchSlide = function(a) {
  2. a = a || {};
  3. var b = {
  4. slideCell: a.slideCell || "#touchSlide",
  5. titCell: a.titCell || ".hd li",
  6. mainCell: a.mainCell || ".bd",
  7. effect: a.effect || "left",
  8. autoPlay: a.autoPlay || !1,
  9. delayTime: a.delayTime || 200,
  10. interTime: a.interTime || 2500,
  11. defaultIndex: a.defaultIndex || 0,
  12. titOnClassName: a.titOnClassName || "on",
  13. autoPage: a.autoPage || !1,
  14. prevCell: a.prevCell || ".prev",
  15. nextCell: a.nextCell || ".next",
  16. pageStateCell: a.pageStateCell || ".pageState",
  17. pnLoop: "undefined " == a.pnLoop ? !0 : a.pnLoop,
  18. startFun: a.startFun || null,
  19. endFun: a.endFun || null,
  20. switchLoad: a.switchLoad || null
  21. },
  22. c = document.getElementById(b.slideCell.replace("#", ""));
  23. if (!c) return ! 1;
  24. var d = function(a, b) {
  25. a = a.split(" ");
  26. var c = [];
  27. b = b || document;
  28. var d = [b];
  29. for (var e in a) 0 != a[e].length && c.push(a[e]);
  30. for (var e in c) {
  31. if (0 == d.length) return ! 1;
  32. var f = [];
  33. for (var g in d) if ("#" == c[e][0]) f.push(document.getElementById(c[e].replace("#", "")));
  34. else if ("." == c[e][0]) for (var h = d[g].getElementsByTagName("*"), i = 0; i < h.length; i++) {
  35. var j = h[i].className;
  36. j && -1 != j.search(new RegExp("\\b" + c[e].replace(".", "") + "\\b")) && f.push(h[i])
  37. } else for (var h = d[g].getElementsByTagName(c[e]), i = 0; i < h.length; i++) f.push(h[i]);
  38. d = f
  39. }
  40. return 0 == d.length || d[0] == b ? !1 : d
  41. },
  42. e = function(a, b) {
  43. var c = document.createElement("div");
  44. c.innerHTML = b,
  45. c = c.children[0];
  46. var d = a.cloneNode(!0);
  47. return c.appendChild(d),
  48. a.parentNode.replaceChild(c, a),
  49. m = d,
  50. c
  51. },
  52. g = function(a, b) { ! a || !b || a.className && -1 != a.className.search(new RegExp("\\b" + b + "\\b")) || (a.className += (a.className ? " ": "") + b)
  53. },
  54. h = function(a, b) { ! a || !b || a.className && -1 == a.className.search(new RegExp("\\b" + b + "\\b")) || (a.className = a.className.replace(new RegExp("\\s*\\b" + b + "\\b", "g"), ""))
  55. },
  56. i = b.effect,
  57. j = d(b.prevCell, c)[0],
  58. k = d(b.nextCell, c)[0],
  59. l = d(b.pageStateCell)[0],
  60. m = d(b.mainCell, c)[0];
  61. if (!m) return ! 1;
  62. var N, O, n = m.children.length,
  63. o = d(b.titCell, c),
  64. p = o ? o.length: n,
  65. q = b.switchLoad,
  66. r = parseInt(b.defaultIndex),
  67. s = parseInt(b.delayTime),
  68. t = parseInt(b.interTime),
  69. u = "false" == b.autoPlay || 0 == b.autoPlay ? !1 : !0,
  70. v = "false" == b.autoPage || 0 == b.autoPage ? !1 : !0,
  71. w = "false" == b.pnLoop || 0 == b.pnLoop ? !1 : !0,
  72. x = r,
  73. y = null,
  74. z = null,
  75. A = null,
  76. B = 0,
  77. C = 0,
  78. D = 0,
  79. E = 0,
  80. G = /hp-tablet/gi.test(navigator.appVersion),
  81. H = "ontouchstart" in window && !G,
  82. I = H ? "touchstart": "mousedown",
  83. J = H ? "touchmove": "",
  84. K = H ? "touchend": "mouseup",
  85. M = m.parentNode.clientWidth,
  86. P = n;
  87. if (0 == p && (p = n), v) {
  88. p = n,
  89. o = o[0],
  90. o.innerHTML = "";
  91. var Q = "";
  92. if (1 == b.autoPage || "true" == b.autoPage) for (var R = 0; p > R; R++) Q += "<li>" + (R + 1) + "</li>";
  93. else for (var R = 0; p > R; R++) Q += b.autoPage.replace("$", R + 1);
  94. o.innerHTML = Q,
  95. o = o.children
  96. }
  97. "leftLoop" == i && (P += 2, m.appendChild(m.children[0].cloneNode(!0)), m.insertBefore(m.children[n - 1].cloneNode(!0), m.children[0])),
  98. N = e(m, '<div class="tempWrap" style="overflow:hidden; position:relative; height:100%;"></div>'),
  99. m.style.cssText = "width:" + P * M + "px;" + "position:relative;padding:0;margin:0; height:100%";
  100. for (var R = 0; P > R; R++) m.children[R].style.cssText = "display:table-cell;vertical-align:top;width:" + M + "px";
  101. var S = function() {
  102. "function" == typeof b.startFun && b.startFun(r, p)
  103. },
  104. T = function() {
  105. "function" == typeof b.endFun && b.endFun(r, p)
  106. },
  107. U = function(a) {
  108. var b = ("leftLoop" == i ? r + 1 : r) + a,
  109. c = function(a) {
  110. for (var b = m.children[a].getElementsByTagName("img"), c = 0; c < b.length; c++) b[c].getAttribute(q) && (b[c].setAttribute("src", b[c].getAttribute(q)), b[c].removeAttribute(q))
  111. };
  112. if (c(b), "leftLoop" == i) switch (b) {
  113. case 0:
  114. c(n);
  115. break;
  116. case 1:
  117. c(n + 1);
  118. break;
  119. case n:
  120. c(0);
  121. break;
  122. case n + 1 : c(1)
  123. }
  124. },
  125. V = function() {
  126. M = N.clientWidth,
  127. m.style.width = P * M + "px";
  128. for (var a = 0; P > a; a++) m.children[a].style.width = M + "px";
  129. var b = "leftLoop" == i ? r + 1 : r;
  130. W( - b * M, 0)
  131. };
  132. window.addEventListener("resize", V, !1);
  133. var W = function(a, b, c) {
  134. c = c ? c.style: m.style,
  135. c.webkitTransitionDuration = c.MozTransitionDuration = c.msTransitionDuration = c.OTransitionDuration = c.transitionDuration = b + "ms",
  136. c.webkitTransform = "translate(" + a + "px,0)" + "translateZ(0)",
  137. c.msTransform = c.MozTransform = c.OTransform = "translateX(" + a + "px)"
  138. },
  139. X = function(a) {
  140. switch (i) {
  141. case "left":
  142. r >= p ? r = a ? r - 1 : 0 : 0 > r && (r = a ? 0 : p - 1),
  143. null != q && U(0),
  144. W( - r * M, s),
  145. x = r;
  146. break;
  147. case "leftLoop":
  148. null != q && U(0),
  149. W( - (r + 1) * M, s),
  150. -1 == r ? (z = setTimeout(function() {
  151. W( - p * M, 0)
  152. },
  153. s), r = p - 1) : r == p && (z = setTimeout(function() {
  154. W( - M, 0)
  155. },
  156. s), r = 0),
  157. x = r
  158. }
  159. S(),
  160. A = setTimeout(function() {
  161. T()
  162. },
  163. s);
  164. for (var c = 0; p > c; c++) h(o[c], b.titOnClassName),
  165. c == r && g(o[c], b.titOnClassName);
  166. 0 == w && (h(k, "nextStop"), h(j, "prevStop"), 0 == r ? g(j, "prevStop") : r == p - 1 && g(k, "nextStop")),
  167. l && (l.innerHTML = "<span>" + (r + 1) + "</span>/" + p)
  168. };
  169. if (X(), u && (y = setInterval(function() {
  170. r++,
  171. X()
  172. },
  173. t)), o) for (var R = 0; p > R; R++) !
  174. function() {
  175. var a = R;
  176. o[a].addEventListener("click",
  177. function() {
  178. clearTimeout(z),
  179. clearTimeout(A),
  180. r = a,
  181. X()
  182. })
  183. } ();
  184. k && k.addEventListener("click",
  185. function() { (1 == w || r != p - 1) && (clearTimeout(z), clearTimeout(A), r++, X())
  186. }),
  187. j && j.addEventListener("click",
  188. function() { (1 == w || 0 != r) && (clearTimeout(z), clearTimeout(A), r--, X())
  189. });
  190. var Y = function(a) {
  191. clearTimeout(z),
  192. clearTimeout(A),
  193. O = void 0,
  194. D = 0;
  195. var b = H ? a.touches[0] : a;
  196. B = b.pageX,
  197. C = b.pageY,
  198. m.addEventListener(J, Z, !1),
  199. m.addEventListener(K, $, !1)
  200. },
  201. Z = function(a) {
  202. if (!H || !(a.touches.length > 1 || a.scale && 1 !== a.scale)) {
  203. var b = H ? a.touches[0] : a;
  204. if (D = b.pageX - B, E = b.pageY - C, "undefined" == typeof O && (O = !!(O || Math.abs(D) < Math.abs(E))), !O) {
  205. switch (a.preventDefault(), u && clearInterval(y), i) {
  206. case "left":
  207. (0 == r && D > 0 || r >= p - 1 && 0 > D) && (D = .4 * D),
  208. W( - r * M + D, 0);
  209. break;
  210. case "leftLoop":
  211. W( - (r + 1) * M + D, 0)
  212. }
  213. null != q && Math.abs(D) > M / 3 && U(D > -0 ? -1 : 1)
  214. }
  215. }
  216. },
  217. $ = function(a) {
  218. 0 != D && (a.preventDefault(), O || (Math.abs(D) > M / 10 && (D > 0 ? r--:r++), X(!0), u && (y = setInterval(function() {
  219. r++,
  220. X()
  221. },
  222. t))), m.removeEventListener(J, Z, !1), m.removeEventListener(K, $, !1))
  223. };
  224. m.addEventListener(I, Y, !1)
  225. };