基于webkit的图片轮播封装
2013-05-21 11:39
225 查看
最近接到的项目中,图片轮播相当多,为了减少重复工作和麻烦,干脆封装了一个
1、css
2、html
3、js
1、css
div{position: relative;width: 555px;margin: 0 auto;height: 175px;overflow: hidden} img{display: block;width: 175px;height: 175px;position: absolute;top: 0;margin: 0 10px;}
2、html
<div> <img id="list_0" /> <img id="list_1" /> <img id="list_2" /> <img id="list_3" /> <img id="list_4" /> </div>
3、js
(function(){ //参数,对象宽度,数据,回调,对象id前缀如objid_,图片显示个数,当前焦点位置默认为0 var _widht,_data,_callback,_objID,_count,_postion; //私有变量,数据长度,交换数量(图片显示个数+2) var len,count; var index = 0;//初始索引值 var overFlag = true;//动画开关 var time = 500;//动画时间500毫秒 var timer = null;//定时器 var widthArray=new Array();//对象交换宽度定位 var objList = new Array();//对象id组 var indexArray = new Array();//交换索引 var $=function(__id){ return document.getElementById(__id); } var ScrollObj = (function(){ //取得相关配置及数据 var set=function(width,data,callback,objid,count,postion){ _widht = width; _data = data; _callback = callback; _objID = objid; _count = count; _postion = postion || 0; setObj(); } //设置对象长度等 var setObj = function(){ for (var i=-1; i < _count+1; i++) { objList.push($(_objID + (i+1))); widthArray.push(i*_widht); indexArray.push(i+1); }; initialize(); } //初始化 var initialize = function(){ len = _data.length; for (var i=0; i < len&&i<_count+2; i++) { objList[i].src = _data[((index-_postion+i)%len+len)%len].img;//插入数据 objList[indexArray[i]].style.left=widthArray[i]+"px";//给对象定位 }; } //控制器 var controller = function(direction){ if(direction=="left"||direction=="right"){ if(overFlag==false)return; overFlag=false; if(timer != null) clearTimeout(timer); if(direction=="right"){ var deleObj = indexArray.splice(0,1); indexArray.splice(indexArray.length,0,deleObj);//交换位置 index++; }else if(direction=="left"){ var deleObj = indexArray.splice(indexArray.length-1,1); indexArray.splice(0,0,deleObj);//交换位置 index--; } for(var i=0;i<_count+2;i++){ if((i==_count+1&&direction=="right")||(i==0&&direction=="left")){ objList[ indexArray[i]].style.webkitTransitionDuration='0s'; }else{ objList[indexArray[i]].style.webkitTransitionDuration='0.5s'; } objList[indexArray[i]].src = _data[((index-_postion+i)%len+len)%len].img;//交换数据 objList[indexArray[i]].style.left=widthArray[i]+"px"; } } if(!!_callback && typeof(_callback)=="function")_callback((index%len+len)%len);//回调,传递当前图片索引,还可以传递其它的,自定义 objList[indexArray[1]].addEventListener('webkitTransitionEnd',function(e){ //console.log(e,e.type,e.propertyName); overFlag = true; timer=setTimeout(function(){ controller(direction) },time) },false); //定时器 } //返回对象 return { init:set, controller:controller } })(); //对外开放特权函数 this.ScrollObj = ScrollObj; })() //数据 var data =[{img:"images/music_1.png"},{img:"images/music_2.png"},{img:"images/music_3.png"},{img:"images/music_4.png"},{img:"images/music_5.png"}]; //回调函数 function displayInfo(info){ //console.log(info); } //初始化 ScrollObj.init(185,data,displayInfo,"list_",3,2); //控制器,方便扩展和添加键盘事件 ScrollObj.controller("right");
相关文章推荐
- Swift 使用CollectionView 实现图片轮播封装就是这样简单
- 基于JavaScript实现仿京东图片轮播效果
- 基于原生javascript的图片轮播domo
- 基于jquery的图片轮播 tab切换组件
- 基于JQuery的实现图片轮播效果(焦点图)
- 基于RollPagerView实现图片轮播功能
- 基于bootstrap的图片轮播效果展示
- 基于javascript数组实现图片轮播
- 基于jquery的图片轮播 (IE8以上)
- 图片轮播插件-基于HTML5+CSS3+JavaSript的响应式图片轮播
- 基于JavaScript实现仿京东图片轮播效果
- 基于Swiper实现移动端页面图片轮播效果
- JavaScript封装简易的图片轮播函数
- PgwSlideshow-基于Jquery的图片轮播插件
- 基于jQuery带进度条全屏图片轮播代码
- 基于Flex的裁剪图片功能封装
- 基于jQuery实现响应式圆形图片轮播特效
- iOS-工具类封装-图片轮播无限循环
- 封装一个无缝图片轮播组件
- 基于jquery实现的仿优酷图片轮播特效代码