1.var posSwitch = new Class({
2.
3. options :{
4. api : 'http://6.cn/6cntest/p/h.html', //待定
5. transition : {duration: 1000,transition: Fx.Transitions.Cubic.easeOut}
6. },
7.
8. initialize:function(parentId,boxClass,options){
9.
10. this.setOptions(options);
11. this.idArr = []; //模块顺序的数组(发送到php端保存的数组)
12. this.parentId = parentId; //模块的总父容器
13. this.boxClass = boxClass; //模块的class
14. this.boxs = $$('#' + this.parentId + ' div.'+ this.boxClass); //排序的模块数组
15. this.num = this.boxs.length;
16. if(this.num == 0) return; // 排序的模块个数
17. for(var i=0; i<this.num; i++){
18. var box = this.boxs[i]
19. this.idArr.push(box.id);
20. }
21. $$('#'+this.boxs[0].id + ' p')[0].addClass('top');
22. $$('#'+this.boxs[this.num-1].id + ' p')[0].addClass('bottom');
23. var uplinks = $$('#' + this.parentId + ' a.up');
24. var downlinks = $$('#'+ this.parentId + ' a.down');
25. uplinks.each(function(ele){
26. ele.addEvent('click',function(event){event.stop();this.switUp(ele)}.bindWithEvent(this))
27. }.bind(this)
28. )
29. downlinks.each(function(ele){
30. ele.addEvent('click',function(event){event.stop();this.switDown(ele)}.bindWithEvent(this))
31. }.bind(this)
32. )
33. },
34.
35. switDown : function(ele){
36. var thisObj = $(ele.parentNode.parentNode);
37. var thisIndex = this.idArr.indexOf(thisObj.id);
38. var thatObj = $(this.idArr[thisIndex+1]);
39. this.idArr[thisIndex] = thatObj.id;
40. this.idArr[thisIndex+1] = thisObj.id;
41.
42. var thisTop = thisObj.getStyle('top') == 'auto' ? 0 : thisObj.getStyle('top').toInt();
43. var thatTop = thatObj.getStyle('top') == 'auto' ? 0 : thatObj.getStyle('top').toInt();
44. var thisHeight = thisObj.getStyle('height').toInt(); // 块高
45. var thatHeight = thatObj.getStyle('height').toInt();
46. var e = new Fx.Styles(thisObj, this.options.transition);
47. e.start({'top':[thisTop,thisTop+thatHeight],'opacity':[0.5,1]});
48. var f = new Fx.Styles(thatObj, this.options.transition);
49. f.start({'top':[thatTop, thatTop-thisHeight],'opacity':[0.5,1]});
50. this.arrowChange();
51. },
52.
53. switUp : function(ele){
54. var thisObj = $(ele.parentNode.parentNode);
55. var thisIndex = this.idArr.indexOf(thisObj.id);
56. var thatObj = $(this.idArr[thisIndex-1]);
57. this.idArr[thisIndex] = thatObj.id;
58. this.idArr[thisIndex-1] = thisObj.id;
59.
60. var thisTop = thisObj.getStyle('top') == 'auto' ? 0 : thisObj.getStyle('top').toInt();
61. var thatTop = thatObj.getStyle('top') == 'auto' ? 0 : thatObj.getStyle('top').toInt();
62. var thisHeight = thisObj.getStyle('height').toInt(); // 块高
63. var thatHeight = thatObj.getStyle('height').toInt();
64. var e = new Fx.Styles(thisObj, this.options.transition);
65. e.start({'top':[thisTop,thisTop-thatHeight],'opacity':[0.5,1]});
66. var f = new Fx.Styles(thatObj, this.options.transition);
67. f.start({'top':[thatTop, thatTop+thisHeight],'opacity':[0.5,1]});
68. this.arrowChange();
69.
70. },
71.
72. arrowChange:function(){
73. var links = $$('#'+ this.parentId + ' a.down, a.up');
74. for(var i=0;i<links.length;i++){
75. $(links[i].parentNode).removeClass('top').removeClass('bottom');
76. }
77. $$('#'+this.idArr[0] + ' p')[0].addClass('top');
78. $$('#'+this.idArr[this.num-1] + ' p')[0].addClass('bottom');
79.
80. },
81.
82. save : function(){
83. var url = this.options.api;
84. var data = 'order='+ this.idArr + '&uid=' + pageMessage.uid;
85. var callback = this.back.bind(this);
86. alert(data);
87. Request.reSend(url,data,callback);
88. },
89.
90. back :function(httpobj){
91.
92. }
93.
94.
95.})
96.posSwitch.implement(new Events, new Options);
97.window.addEvent('load', function(){
98. mySwitch = new posSwitch('scrollWrap','myPanelBox');
99.})
mootools位置切换类
时间: 2024-11-05 18:40:44
mootools位置切换类的相关文章
duilib 怎么实现两个位置的控件位置切换
问题描述 duilib 怎么实现两个位置的控件位置切换 在同一个xml中(不考虑用多个窗口解决), 如何实现拖动互换两个控件的位置.
Android中的ViewPager视图滑动切换类的入门实例教程_Android
ViewPager引入示例首先让大家有个全局的认识,直接上个项目,看看仅仅通过这几行代码,竟然就能完成如此强悍的功能. 效果图: 实现了三个view间的相互滑动. 第一个VIEW向第二个VIEW滑动.第二个VIEW向第三个VIEW滑动 一.新建项目,引入ViewPager控件ViewPager.它是google SDk中自带的一个附加包的一个类,可以用来实现屏幕间的切换. 1.在主布局文件里加入 <RelativeLayout xmlns:android="http://schemas.a
Android中的ViewPager视图滑动切换类的入门实例教程
ViewPager引入示例 首先让大家有个全局的认识,直接上个项目,看看仅仅通过这几行代码,竟然就能完成如此强悍的功能. 效果图: 实现了三个view间的相互滑动. 第一个VIEW向第二个VIEW滑动.第二个VIEW向第三个VIEW滑动 一.新建项目,引入ViewPager控件 ViewPager.它是google SDk中自带的一个附加包的一个类,可以用来实现屏幕间的切换. 1.在主布局文件里加入 <RelativeLayout xmlns:android="http://schemas
JS库Mootools的Class类之关于initialize
相信大家对于js基本都是会写,可是往往会出现一个人一个风格,阅读别人的代码或者过一段时间阅读 自己的代码,都是很头痛的事情.如果将js也面向对象,定义个类,类名有一定的意义,定义函数,封装在类里面, 函数都注释的话,而且写法很容易看懂,那看代码将是一件很愉快的事情. 下面介绍javascript面向对象,最近有时间研究mootools库,觉得写法已经非常接近面向对象设计 思想了.如果是大牛使用mootools的只需定义好接口,让小牛们实现.如果是小牛们写的话,代码的风格 一致,而且面向对象,学习
位置服务类产品的好友关系和激励机制探索
一.好友关系 LBS产品中的好友关系,比传统互联网的好友关系要复杂很多,主要原因是多了一个基于位置的用户关系,也是手机所独有的功能特点.正如示意图所示,LBS产品的好友关系主要分为以下三种: (1)真实的好友关系: 通过用户调研我们得知使用某产品的好友的数量,是决定用户是否使用该产品的一个重要因素,所以,怎样能帮助用户更多的导入好友关系,是起步阶段一个重要的环节. 在这里我将提供四种导入好友的方式: 第一种,通过邮箱联系人导入好友,这个不是用户认可度最高的,但是是导入联系人最高效的. 第二种,基
位置服务类产品的用户状态和地点管理设想
一.用户状态 针对于旅行用户和普通用户来说,使用LBS产品的出发点有很大差别.普通用户希望用LBS产品来http://www.aliyun.com/zixun/aggregation/17696.html">记录生活足迹.找到周边信息,而旅行用户更希望看到一些游记.攻略之类的.那么如果这些信息都混杂在一起的话,会导致内容冗杂,不好区隔. 针对这个问题,我们从两个地方可以得到一些启发,第一点启发是红绿灯 我们可以给用户预设三种状态: 红灯--宅黄灯--上班上学,三点一线绿灯--旅行中 第二点
使用Mootools开发JavaScript单元测试框架
Mootools是一个很好的JavaScript框架,它简洁.模块化,使用很简单,开发人员能够很快上手,编写扩展能力强.兼容性好的JavaScript代码.我这两天用了用,感觉和Prototype用法简直一模一样,不过功能似乎更加强,有很多效果,拖拽等.而且它的面向对象,继承比Prototype更直观好用,所以我开始学习这个框架. 首先看看Mootools的基本用法吧,更加详尽的解释可以在官方网站上找到. 1.? 如果我们要写一个Animal类,我们可以这样写: var Animal = new
ViewPager实现左右两个屏幕的切换
项目终于需要这样的效果了,采用ViewPager去实现吧,让网上那些乱七八糟的屏幕切换类都终结了吧,ViewPager是google官方的! 下面是我借鉴的文章: 起初最早接触到左右两个屏幕切换的是在 <创新源于模仿之三:实现左右两个屏幕的切换> 这篇文章上,感谢作者为我们提供了这么好的DEMO. 什么是ViewPager呢? 它是实现左右两个屏幕平滑地切换的一个类,它是Google提供的,作为Android的一个补充.先上个效果图把,让大家有个直观的认识. 我们在网上搜索这相关
《Cocos2D-x权威指南》——3.3 场景类
3.3 场景类 CCScene类是CCNode的子类.和CCNode相比,它只是添加了一个特性,那就是拥有自己的锚点,位置在屏幕的正中央.除此之外,它目前还没有额外的功能,只是一个抽象的概念. 3.1节中介绍CCNode类时,把屏幕上所有显示对象的父节点设置为我们定义的节点,这个父节点的角色一般由场景承担.CCScene类的继承关系如图3-9所示. 可以看到,CCScene类有CCTransitionScene(切换场景类),并且CCTransitionScene类有很多子类,这些类都用于切换场