JQ封装切换滚动功能

/*---------控制滚动图片v1(作者:SFLYQ)-----------
Options 配置对象,(用来配置控制元素的dom位置,初始化一些必要的对象或者方法)
DoIni 初始化操作(初始化元素的jq对象,以及事件绑定等)
DoMove 控制图片现在模块的移动(控制的方向又用户传入)
BindMoveItem根据dom位置,绑定这个元素为初始化选中,并显示在第一个,
*/
效果地址:http://pro9505d48a.isitestar.cn/

代码下载地址:https://github.com/SFLAQiu/SFLAQiu.JQPack.ControlMoveDiv/

  1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  2 <html xmlns="http://www.w3.org/1999/xhtml">

  3 <head>

  4     <title></title>

  5 <link href="Style/Default.css" type="text/css" rel="stylesheet"/>

  6 <style  type="text/css">

  7     .iconLeft{float:left; display:block; border:1px solid green; height:150px; width:50px;}/*左边按钮*/

  8     .iconRight { float:left;display:block; border:1px solid green; height:150px; width:50px;}/*右边按钮*/

  9     .picList{float:left;  position: absolute; width:800px; left:0px; }/*移动模块*/

 10     .picList li{float:left; border:1px solid red; border:1px solid red; height:150px; width:200px;list-style:none; }/*移动项*/

 11     .picWrap{ float:left; overflow:hidden; height:150px; width:800px; border:1px solid blue;}/*移动范围模块*/

 12     /*效果*/

 13     .on{ background-color:#808080;}/*选中效果*/

 14 </style> 

 15 

 16 </head>

 17 <body>

 18     <div>

 19        <a class="iconLeft" href="javascript:;"  onclick="MoveByBtn.DoMove('l');return false;"><</a>

 20             <div id="RangeBox"  style="position: relative;" class="picWrap">

 21                 <div id="MoveBox"  class="picList">

 22                     <ul>

 23                         <li>111111<span style="display:none;color:red;"></span></li>

 24                         <li>222222<span style="display:none;color:red;"></span></li>

 25                         <li>333333<span style="display:none;color:red;"></span></li>

 26                         <li>4444444<span style="display:none;color:red;"></span></li>

 27                         <li>5555<span style="display:none;color:red;"></span></li>

 28                         <li>666<span style="display:none;color:red;"></span></li>

 29                         <li>77<span style="display:none;color:red;"></span></li>

 30                         <li>8<span style="display:none;color:red;"></span></li>

 31                         <li>9<span style="display:none;color:red;"></span></li>

 32                         <li>10<span style="display:none;color:red;"></span></li>

 33                         <li>11<span style="display:none;color:red;"></span></li>

 34                         <li>12<span style="display:none;color:red;"></span></li>

 35                     </ul>

 36                 </div>

 37             </div>

 38         <a class="iconRight" href="javascript:;"  onclick="MoveByBtn.DoMove('r');return false;">></a>     

 39     </div>

 40     

 41 

 42 

 43 

 44 

 45 <script src="JS/jquery.1.9.1.min.js" type="text/javascript" ></script>

 46 <script src="JS/jquery.easing.min.js" type="text/javascript" ></script>

 47 <script type="text/javascript" >

 48 /*---------控制滚动图片v1(作者:SFLYQ)-----------

 49 Options 配置对象,(用来配置控制元素的dom位置,初始化一些必要的对象或者方法)

 50 DoIni 初始化操作(初始化元素的jq对象,以及事件绑定等)

 51 DoMove 控制图片现在模块的移动(控制的方向又用户传入)

 52 BindMoveItem根据dom位置,绑定这个元素为初始化选中,并显示在第一个,

 53 */

 54 var MoveByBtn = {};

 55 MoveByBtn = {

 56     Options: {

 57         moveBoxDom: "#MoveBox",//移动块html元素的dom位置

 58         moveBoxItemsDom: "#MoveBox ul li",//移动项html元素的dom位置

 59         moveRangeBoxDom: "#RangeBox",//移动范围块html元素的dom位置

 60         selectItemsDom: "#MoveBox ul li",//选中项html元素的dom位置

 61         selectClass: "on",//选中效果类名

 62         clickDoFn: function () { }//点击选中项后操作(在所有操作之后)

 63     },

 64     moveItemLength: 0,//移动项的总个数

 65     moveWidth: 0,//每次移动的长度

 66     moveBoxJq: null,//移动块的JQ对象

 67     moveRangeBoxJq: null,//移动范围块的JQ对象

 68     moveBoxItemJqs: null,//移动项JQ对象集合

 69     selectItemsJq: null,//选中项JQ对象集合

 70     // 初始化操作

 71     DoIni: function (iniObj) {

 72         MoveByBtn.moveBoxJq = $(MoveByBtn.Options.moveBoxDom);

 73         MoveByBtn.moveRangeBoxJq = $(MoveByBtn.Options.moveRangeBoxDom);

 74         MoveByBtn.moveBoxItemJqs = $(MoveByBtn.Options.moveBoxItemsDom);

 75         MoveByBtn.selectItemsJq = $(MoveByBtn.Options.selectItemsDom);

 76 

 77         MoveByBtn.Options = $.extend(MoveByBtn.Options, iniObj);

 78         MoveByBtn.moveWidth = $(MoveByBtn.moveBoxItemJqs[0]).outerWidth(true);

 79         MoveByBtn.moveItemLength = MoveByBtn.moveBoxItemJqs.length;

 80         var getRestrictWidth = MoveByBtn.moveBoxItemJqs.length * MoveByBtn.moveWidth - MoveByBtn.moveRangeBoxJq.width();

 81         //初始化点击

 82         MoveByBtn.moveBoxItemJqs.click(function () {

 83             MoveByBtn.DoItemClick(this);

 84             return false;

 85         });

 86 

 87         //初始化范围这个的宽度

 88         MoveByBtn.moveBoxJq.css({ "width": MoveByBtn.moveItemLength * MoveByBtn.moveWidth + "px" });

 89         MoveByBtn.moveBoxJq.css({ left: "0px", position: "absolute" });

 90     },

 91     //移动操作

 92     DoMove: function (movePos) {

 93         MoveByBtn.moveBoxJq.stop(false, true);

 94         var getNowLeft = parseInt(MoveByBtn.moveBoxJq.css("left"), 10);

 95         var needMoveLeft = 0;

 96         MoveByBtn.DoItemSelect(movePos);

 97         if (movePos == "r") {

 98             needMoveLeft = getNowLeft - MoveByBtn.moveWidth;

 99             var getRestrictWidth = MoveByBtn.moveBoxItemJqs.length * MoveByBtn.moveWidth - MoveByBtn.moveRangeBoxJq.width();

100             if (needMoveLeft * -1 > getRestrictWidth) return;

101         } else if (movePos == "l") {

102             if (getNowLeft == 0) return;

103             needMoveLeft = getNowLeft + MoveByBtn.moveWidth;

104         }

105         MoveByBtn.moveBoxJq.stop(false, true).animate({ left: needMoveLeft + "px" }, 500, "easeOutQuint", function () { });

106     },

107     //根据movePos(移动方向)控制图片滚动切换的方向,并触发图片被选中的效果和点击选中图片的操作  l=left r=right

108     DoItemSelect: function (movePos) {

109         var nowSelJq = $(MoveByBtn.Options.moveBoxItemsDom + "[NowSelect='1']");

110         if (!nowSelJq[0]) return;

111         var getSelNum = MoveByBtn.moveBoxItemJqs.index(nowSelJq);

112         var needSelNum = 0;

113         if (movePos == "l") {

114             needSelNum = getSelNum - 1;

115         } else if (movePos == "r") {

116             needSelNum = getSelNum + 1;

117         }

118         //选中效果

119         if (MoveByBtn.DoSelectEff(needSelNum)) {

120             //选中后调用点击操作

121             MoveByBtn.DoItemClick(MoveByBtn.moveBoxItemJqs.eq(needSelNum)[0]);

122         }

123         return;

124     },

125     //被选中的效果

126     DoSelectEff: function (needSelNum) {

127         if (needSelNum >= MoveByBtn.moveItemLength || needSelNum < 0) return false;//如果被选中的 位置数不存在就直接跳出

128         MoveByBtn.selectItemsJq.filter("." + MoveByBtn.Options.selectClass).removeClass(MoveByBtn.Options.selectClass);

129         var selItemJq = MoveByBtn.selectItemsJq.eq(needSelNum);

130         if (!selItemJq[0]) return false;

131         MoveByBtn.moveBoxItemJqs.attr({ "NowSelect": "2" });

132         MoveByBtn.moveBoxItemJqs.eq(needSelNum).attr({ "NowSelect": "1" });

133         MoveByBtn.selectItemsJq.eq(needSelNum).addClass(MoveByBtn.Options.selectClass);

134         return true;

135     },

136     //点击操作,(添加选中的效果,并判断是否触发外部传入的点击操作,这个操作在所有操作之后)

137     DoItemClick: function (moveItemDom) {

138         var getIndex = MoveByBtn.moveBoxItemJqs.index(moveItemDom);//被选中的位置

139         if (getIndex >= MoveByBtn.moveItemLength || getIndex < 0) return;//如果被选中的 位置数不存在就直接跳出

140         MoveByBtn.DoSelectEff(getIndex);

141         //用户配置了 Options 的点击操作的配置就执行

142         if (MoveByBtn.Options.clickDoFn) MoveByBtn.Options.clickDoFn(moveItemDom);

143     },

144     //根据dom位置,绑定这个元素为初始化选中,并显示在第一个,

145     BindMoveItem: function (bingItemDom) {

146         if (!$(bingItemDom)[0]) return;

147         var getNum = MoveByBtn.moveBoxItemJqs.index($(bingItemDom));//元素在集合中所对应的位置数

148         var needMoveLeft = getNum * MoveByBtn.moveWidth * (-1);

149         var getRestrictWidth = MoveByBtn.moveBoxItemJqs.length * MoveByBtn.moveWidth - MoveByBtn.moveRangeBoxJq.width();

150         MoveByBtn.DoItemClick(bingItemDom);

151         MoveByBtn.DoSelectEff(getNum);

152         if (needMoveLeft * -1 > getRestrictWidth) { MoveByBtn.moveBoxJq.css({ left: getRestrictWidth * (-1) + "px" }); return; }

153         MoveByBtn.moveBoxJq.css({ left: needMoveLeft + "px" });

154     }

155 };

156     //初始化

157     MoveByBtn.DoIni({

158         moveBoxDom: "#MoveBox", moveBoxItemsDom: "#MoveBox ul li", moveRangeBoxDom: "#RangeBox", selectItemsDom: "#MoveBox ul li", selectClass: "on", clickDoFn: function (moveItemDom) {

159             BindSelBigPic(moveItemDom);

160             return false;

161         }

162     });

163 

164     //点击操作,拓展

165     function BindSelBigPic(moveItemDom) {

166         $("#MoveBox ul li span").hide();

167         $(moveItemDom).find("span").show();

168     }

169      //初始化绑定选中位置,(移动上去,并选中)

170      MoveByBtn.BindMoveItem($("#MoveBox ul li")[2]);

171     //MoveByBtn.BindMoveItem($("#MoveBox ul li")[7]);

172     </script>

173 </body>

174 </html>

 

你可能感兴趣的:(封装)