U.ME.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. //----------------------------------------此js用来做特殊效果,例如弹出窗体缓动效果,关闭窗体缓动效果等-----------------------------
  2. Namespace.register("U.ME"); //js特效库
  3. //----到时全部都要合在Extend里
  4. //--------------------------------------------------------------------------动画区域---------------------------------------------------------------
  5. //动画
  6. U.ME.DH = function (UDOD, UTM, UTF, UDTD) {
  7. if (UDOD) {
  8. var i; //定义变量i
  9. var _UDE = UTM ? setInterval(U.M.apply(UDOD, [[U.ME.DHGDAMXG, [UTF, 0]]]), UTM) : null; //动画效果
  10. UDOD.onmouseout = UDOD.onmouseover = U.M.apply(UDOD, [[U.ME.DHGDAM, [arguments, _UDE]]]); //停止开始动画
  11. if (UDTD) {//功能未知,变量没试用过 一直为空 不会进if
  12. for (i = 0; i < UDTD.length; i++) {
  13. (UDTD[i]) && (UDTD[i].onclick = U.M.apply(UDTD[i], [[U.ME.DHQH, [i, arguments, _UDE]]])); //上下页切换
  14. };
  15. };
  16. }
  17. }
  18. //快速切换
  19. U.ME.DHQH = function (ITF, UAE, UDE) {
  20. clearInterval(UDE); //停止动画
  21. U.ME.DHGDAMXG.apply(UAE[0], [UAE[2], ITF]); //切换效果展示
  22. U.ME.DH.apply(window, UAE); //设置动画
  23. }
  24. //滚动动画开始停止
  25. U.ME.DHGDAM = function (USC, UDE) {
  26. if (!U.M.onmouseout(this)) { //取消动画
  27. var _UTP = event.type; //获取事件类型
  28. clearInterval(UDE); //关闭计时器
  29. if (_UTP == "mouseout") {//鼠标离开的时候
  30. U.ME.DH.apply(window, USC); //重新滚动
  31. }
  32. }
  33. }
  34. //动画效果
  35. U.ME.DHGDAMXG = function (UTF, ITF) {
  36. UTF = UTF == "L" ? "width" : "height"; //判断是不是L 是就改变宽度
  37. var _UFT = ITF === 0, //判断是否存在计时器
  38. _UDOD = $(this), //获取ul
  39. _UDAD = _UDOD.Child(), //获取ul下面的子元素
  40. _UDSD = _UDAD[_UFT ? 0 : _UDAD.length - 1],
  41. _UWH = "client" + (UTF.charAt(0).toUpperCase() + UTF.substr(1)),
  42. _UTP = [{ "overflow": "hidden" }, {}]; //设置样式
  43. if (_UDSD[_UWH]) { //这里是判断是否是否符合变化
  44. _UTP[0][UTF] = "0px"; _UTP[1][UTF] = _UDSD[_UWH] + "px"; //改变样式
  45. (_UFT) && (_UTP.reverse());
  46. $(_UDSD).addAttrArray({ "style": _UTP[0] }).animate(_UTP[1], 500, _UFT ? U.M.apply(null, [[U.M.apply(_UDOD, [[_UDOD.append, [_UDSD, 0]]])], [U.M.apply($(_UDSD), [[$(_UDSD).addAttrArray, [{ "style": _UTP[0]}]]])]]) : null); //执行动画?
  47. (!_UFT) && (this.insertBefore(_UDSD, _UDAD[0])); //插入元素
  48. }
  49. }
  50. //----------------------------------------------------------------------------切换图片------------------------------------------------------------
  51. //切换图片效果
  52. U.ME.YHT = function (UDOD, UDTD, UCL, ITF, UAT, ITM, UTF) {
  53. if (UDOD) {//变量是否定义
  54. var i, _UDCD = $(UDTD).Child(), //获取圆点的子元素
  55. _UDE = [], //初始化
  56. _UKE = [ITF || 0], //0?
  57. _UTM = null; //计时器
  58. if (ITM > 0) {
  59. _UTM = setInterval(U.M.apply(null, [[U.ME.YHTXZ, [UDOD, UDTD, _UKE, UCL]]]), ITM || 1000); //开始计时器 并且赋值
  60. } //图片选择
  61. _UKE[1] = _UTM; //存储计时器?
  62. if (!UTF) {//如果没值
  63. U.ME.YHTXZ(UDOD, UDTD, _UKE, UCL);
  64. } else if (_UKE[0] >= _UDCD.length) {//超过图片数量时
  65. _UKE[0] = 0; //?换成第一张
  66. };
  67. UTF = null; //参数变化
  68. UDOD.onmouseover = UDOD.onmouseout = U.M.apply(UDOD, [[U.M.StopBubble], [U.ME.YHTQX, [arguments, _UTM, _UKE]]]); //切换停止
  69. for (i = 0; i < _UDCD.length; i++) {
  70. _UDCD[i].onmouseover = _UDCD[i].onmouseout = U.M.apply(_UDCD[i], [[U.M.StopBubble], [U.ME.YHTQX, [arguments, _UTM, _UKE, i]]]); //切换查看
  71. }
  72. if (UAT) {//UAT 一直为0 不进入
  73. for (i = 0; i < 2; i++) {
  74. (UAT[i]) && (UAT[i].onclick = U.M.apply(UAT[i], [[U.ME.SXYHT, [(i - 1) * 2, _UKE, _UTM, arguments]]])); //上下页
  75. }
  76. }
  77. return _UTM; //返回计时器
  78. }
  79. }
  80. //计时器变化区域
  81. U.ME.YHTXZ = function (UDOD, UDTD, UDE, UCL) {
  82. var _UDAD = $(UDOD).Child();
  83. if ((!UDOD || UDOD) == (document || !_UDAD)) {
  84. clearInterval(UDE[1]); //移除
  85. }
  86. else {
  87. U.ME.ZSYHTXZ(UDOD, UDTD, UDE, UCL);
  88. UDE[0]++; (UDE[0] >= _UDAD.length) && (UDE[0] = 0); //变化切换
  89. }
  90. }
  91. //上下张
  92. U.ME.SXYHT = function (UTF, ITF, UTM, UCS) {
  93. var _UDCD = $(UCS[0]).Child();
  94. clearInterval(UTM); UCS[3] = (ITF[0] += UTF); //删除计时器
  95. if (ITF[0] < 0) {
  96. UCS[3] = _UDCD.length + UCS[3];
  97. }
  98. else if (ITF[0] >= _UDCD.length) {
  99. UCS[3] = 0;
  100. }
  101. U.ME.YHT.apply(this, UCS); //上下张查看
  102. }
  103. //开始或者取消图片选择查看
  104. U.ME.YHTQX = function (UCS, UTM, UKE, ITF) {
  105. if (!U.M.onmouseout(this)) {//是否在图片上取消
  106. var _UTP = event.type, //事件类型
  107. i = UKE[0] - 1;
  108. clearInterval(UTM); //关闭计时器
  109. i = i < 0 ? $(UCS[0]).Child().length - 1 : i;
  110. UCS[3] = UKE[0] = ITF != null ? ITF : UKE[0]; //清除计时器
  111. if (_UTP == "mouseout") {//鼠标离开
  112. UCS[3] = ITF != null ? ITF : i;
  113. UCS = Array.prototype.slice.call(UCS);
  114. UCS[6] = true; UCS[3]++;
  115. U.ME.YHT.apply(this, UCS); //重启计时器
  116. } //切换图片效果
  117. else if ((ITF != null && (i != ITF))) {
  118. U.ME.ZSYHTXZ(UCS[0], UCS[1], UKE, UCS[2]); //停止在该图片上
  119. }
  120. }
  121. }
  122. //图片展示
  123. U.ME.ZSYHTXZ = function (UDOD, UDTD, UDE, UCL) {
  124. var i, _UST,
  125. _UDAD = $(UDOD).Child(), //获取图片子元素
  126. _UDCD = UDTD ? $(UDTD).Child() : null;
  127. for (i = 0; i < _UDAD.length; i++) {//切换样式
  128. $(_UDAD).addAttrArray({ "style": i == UDE[0] ? { "filter": "alpha(opacity=0)", "-moz-opacity": "0", "opacity": "0", "display": "block"} : { "display": "none"} }, i); //图片切换样式
  129. if (UDTD) {//如果有圆点
  130. _UST = _UDCD[i].className; //class
  131. _UDCD[i].className = _UST.replace(" " + UCL, "").replace(UCL, "") + (i == UDE[0] ? ((_UST ? " " : "") + UCL) : ""); //按钮样式
  132. }
  133. }
  134. $(_UDAD[UDE[0]]).animate({ "-moz-opacity": "1", "opacity": "1", "filter": "alpha(opacity=100)" }, 500); //透明度动画?
  135. }
  136. //图片轮播:通过滚动调轮播图片
  137. U.ME.LBTP = function (UDE) {
  138. var _UIE = UDE.i || 0,
  139. _UDOD = $(UDE.e),
  140. UDAD = _UDOD.Child(); //子元素
  141. if (UDAD.length && UDE["s"]) {
  142. $(UDAD[_UIE]).addAttrArray(UDE["s"]); //默认点
  143. U.Ut.AddObj(UDE, { a: UDAD, i: UDE.i || 0, p: UDE.p || _UDOD.Parent(), w: UDE.w || 1 });
  144. return new U.ME.LBTPF(UDE);
  145. }
  146. }
  147. //开始轮播效果
  148. U.ME.LBTPF = function (UDE) {
  149. U.Ut.AddObj(this, UDE);
  150. this.init();
  151. $(UDE.a).bind("click", U.M.apply(this, this.click));
  152. }
  153. //轮播使用
  154. U.ME.LBTPF.prototype = {
  155. init: function () {//初始化
  156. (this.UTI) && (clearInterval(this.UTI)); //清除原有的计时器
  157. this.UTI = setInterval(U.M.apply(this, this.time), this.t || 5000); //计时开始
  158. },
  159. click: function (UIE) {//点击使用
  160. var _UDOD, _UDPD,
  161. _UIE = (UIE != null && !isNaN(Number(UIE))); //判断是否不为空
  162. if (_UIE) {
  163. _UIE = this.i + UIE;
  164. } else {
  165. _UDOD = event.srcElement; //获取时间对象
  166. while (_UDOD && (_UDPD = _UDOD.parentNode) != this.e) {
  167. _UDOD = _UDPD;
  168. }
  169. _UIE = this.a.indexOf(_UDOD); //判断是否是数组
  170. }
  171. if (_UIE != -1 && _UIE != null) { this.time(_UIE); this.init(); }
  172. },
  173. time: function (UIE) {//轮换
  174. if (this.a[0] && this.a[0].parentNode == this.e) {
  175. var i, _ULT, _UAE, _UDOD,
  176. _UDPD = this.p,
  177. _UDAD = this.a,
  178. _UL = _UDAD.length,
  179. _UIE = this.i;
  180. if (UIE == null) {
  181. this.i += this.w;
  182. if (_UIE == _UL - 1) {
  183. this.w = -1; this.i = _UL - 2;
  184. } else if (!_UIE) {
  185. this.i = this.w = 1;
  186. }
  187. } else {
  188. this.i = UIE;
  189. }
  190. $(_UDAD[_UIE]).addAttrArray(this.h);
  191. $((_UDOD = _UDAD[this.i])).addAttrArray(this.s); //添加或者删除
  192. if (this.af) {
  193. this.af(this);
  194. }
  195. else {
  196. _UAE = [_UDPD.scrollLeft, _UDPD.offsetWidth, _UDOD.offsetLeft - this.e.offsetLeft, _UDOD.offsetWidth];
  197. if (_UAE[0] + _UAE[1] < _UAE[2]) {
  198. _ULT = _UAE[2] + _UAE[3] * 2 - _UAE[1];
  199. } else if (_UAE[2] < _UAE[0]) {
  200. _ULT = _UAE[2] - _UAE[3] * 2;
  201. }
  202. (_ULT != null) && ($(_UDPD).animate({ "scrollLeft": _ULT }, 100));
  203. };
  204. (this.cb) && (this.cb());
  205. }
  206. else {
  207. clearInterval(this.UTI);
  208. } //取消
  209. }
  210. }
  211. /*函数使用方法
  212. 函数:U.ME.DH(obj, speed, direction)
  213. 参数一 obj : <ul>标签对象
  214. 参数二 speed : 速度 单位为毫秒
  215. 参数三 direction : 图片滑动的方向 “T”,”B”,”L”,”R”分别为上下左右
  216. 实例 :
  217. <html>
  218. <head>
  219. <meta charset="UTF-8" />
  220. <script type="text/javascript" src="/uform.js"></script>
  221. <style>
  222. li{list-style-type:none;}
  223. #UJ_Banner_ul{}
  224. #UJ_Banner_ul li{ height:100px;width:100px;margin:0 10;font-size:50px;float:left;border:1px #000 solid;}
  225. </style>
  226. <script type="text/javascript" >
  227. window.onload = function(){
  228. U.ME.DH($("#UJ_Banner_ul")[0], 1000, "L");
  229. }
  230. </script>
  231. </head>
  232. <body>
  233. <ul id="UJ_Banner_ul">
  234. <li>1</li>
  235. <li>2</li>
  236. <li>3</li>
  237. <li>4</li>
  238. <li>5</li>
  239. </ul>
  240. </body>
  241. </html>
  242. 函数: U.ME.YHT(obj, point, pointclass,0,button,speed)
  243. 参数一 obj : <ul>标签对象
  244. 参数二 point: 圆点动画 没有可不传
  245. 参数三 pointclass: 圆点执行样式,没有可不传
  246. 参数四 0 : 功能未知
  247. 参数五 button : 左右点击的按钮 是数组形式的 没有可不传
  248. 参数六 speed : 速度
  249. 实例 :
  250. <html>
  251. <head>
  252. <meta charset="UTF-8" />
  253. <script type="text/javascript" src="/uform.js"></script>
  254. <style>
  255. li{list-style-type:none;}
  256. #UJ_Banner_ul{height:100px;}
  257. #UJ_Banner_ul li{ height:100px;width:100px;margin:0 10;font-size:50px;float:left;border:1px #000 solid;}
  258. #UJ_Banner_L{width:20px;height:20px;border:1px #000 solid;display:inline-block;}
  259. #UJ_Banner_R{width:20px;height:20px;border:1px #000 solid;display:inline-block;}
  260. #fround div{height:20px; width:20px;display:inline-block;border:1px #000 solid;border-radius:50%;}
  261. .red{background:red;}
  262. </style>
  263. <script type="text/javascript" >
  264. window.onload = function(){
  265. U.ME.YHT($("#UJ_Banner_ul")[0], $("#fround")[0], 'red', 0, [$("#UJ_Banner_L")[0], $("#UJ_Banner_R")[0]], 1000);
  266. }
  267. </script>
  268. </head>
  269. <body>
  270. <ul id="UJ_Banner_ul">
  271. <li>1</li>
  272. <li>2</li>
  273. <li>3</li>
  274. <li>4</li>
  275. <li>5</li>
  276. </ul>
  277. <div id="UJ_Banner_L">左Á¨®</div>
  278. <div id="UJ_Banner_R">右®¨°</div>
  279. <div id="fround">
  280. <div class="red"></div>
  281. <div ></div>
  282. <div ></div>
  283. <div ></div>
  284. <div ></div>
  285. </div>
  286. </html>
  287. */