首页 > 网站 > WEB开发 > 正文

wap图片滚动特效_无css3 元素js脚本编写

2024-04-27 14:21:00
字体:
来源:转载
供稿:网友

wap图片滚动特效_无CSS3 元素js脚本编写

Posted on 2014-07-25 16:44 绝交 阅读(...) 评论(...) 编辑 收藏

手机图片滑动切换,网上有很多这样的例子,但都借助于其他组件,让代码混乱的不行;还有就是用到css3里的 transform:translate(x,y);移动元素,不过发现在不支持css3的设备上马上完蛋了,所 有下定决心自己做一个,谁知出现了很多的问题,其中最重要的是给图片加链接,网页中的上下滚动条不能在拖动图片的时候滚动,并且不能兼容pc机器上的拖动;在这里就简单介绍一下遇到的问题和解决的方法;

问题一:给图片加上链接后,在拖动的时候总是跳到其他页面;

  问题根源主要是不能判断是点击还是拖动,手机事件一般顺序是 touchstart-》mousedown-》mousemove-》touchmove-》mouseup-》touchend-》click,根据不同手机可能会有不同。触屏手机的事件一般都用 touchstart -》 touchmove -》 touchend -》 click,click事件是最后执行的,当我们有touchstart,touchmove,touchend处理完后,如果不进行return或取消默认就会触发click事件,这样网页就跳走了,解决办法是记录touchstart的坐标点和touchmove的坐标点,根据两个坐标点算出触点是否移动过,其中值得关注的是事件的Event参数,触屏一般是event.touches,event.targetTouches,event.changedTouches。我在测试当中发现者三个参数的值时一样的,不过值得注意的是touchend事件不会得到触点坐标(也或许是设备问题),在移动的时候touchmove会不断出发,有时候touchmove会不触发,其中就是浏览器自带一下功能把触点(或鼠标)脱离了选中的元素,比如上时间按住会出现菜单,(pc上图片就会生成一个可以拖动的缩略图),这样就要在touchstart(mousedown)的时候先event.PReventDefault();取消默认。

问题二:网页中的上下滚动条不能在拖动图片的时候滚动;

相信这个问题只要制作过得都会遇到,其实主要是在移动(touchmove,mousemove)的时候取消了默认事件event.preventDefault(),在这里我们需要做的是,是否移动获得触点和开始的触点是否一致,如果一致就直接返回,还要算出是移动的x轴多一点还是y轴移动的多一点,这样我们就可以做左右滑动的时候取消默认,在上学的时候不取消;

问题三:并且不能兼容pc机器上的拖动

这是因为在绑定事件的时候不能完全考虑事件名称是touchstart还是mousedown ,从网上搜了一下,感觉做的不做,就直接抄过来了

this.eventName={            touchstart:'touchstart',            touchmove:'touchmove',            touchend:'touchend',        }在做判断if(!device){                this.eventName.touchstart='mousedown';                this.eventName.touchmove='mousemove';                this.eventName.touchend='mouseup';            }dom.addEventListener(this.eventName.touchstart,handleEvent,false);大概是这个意思,根据设备不同绑定不同的事件
View Code

其实还碰到了很多的问题,就不一一说明了

不多说了,直接把代码贴出来了,如果有什么不太好的地方,还请多多包含和提出意见

  1 <!doctype html>  2 <html>  3 <head>  4     <meta charset="utf-8">  5     <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport" />  6     <meta content="yes" name="apple-mobile-web-app-capable" />  7     <meta content="black" name="apple-mobile-web-app-status-bar-style" />  8     <meta content="telephone=no" name="format-detection" />  9     <title></title> 10     <style type="text/css"> 11  12         html,body,*{ margin: 0; padding: 0; border: 0;} 13     #wapListImage1,    #wapListImage{width: 100%;  overflow: hidden; height: auto; cursor: move; zoom:1; position: relative;} 14     #wapListImage1 ul, 15         #wapListImage1 ul li, 16         #wapListImage1 ul, 17         #wapListImage ul li{ list-style: none;} 18     #wapListImage1 ul,    #wapListImage ul{width: 99999px;} 19     #wapListImage1 ul li,    #wapListImage ul li{ float: left;} 20 #wapListImage ul li a img:focus, 21 #wapListImage ul li a img:checked, 22 #wapListImage ul li a img, 23 #wapListImage ul li a img:active, 24 #wapListImage ul li a,#wapListImage ul li a:active{cursor: move;} 25 #wapListImage dl{ position: absolute; bottom: 10px; right: 0;} 26 #wapListImage dl span{overflow: hidden;width: 10px; height: 10px; background-color: #900; display: inline-block;} 27 #wapListImage dl span.selected{ background-color: #000;} 28     </style> 29 </head> 30 <body> 31     <div id="k"> 32 <div id="wapListImage"> 33     <ul> 34         <li><a href="javascript:void(0)" hrefto="ddd" target="_black"><img src="http://file25.mafengwo.net/M00/37/74/wKgB4lM9Hb-ARjpJAAOsX46Kq9w39.gonglve.w690.jpeg"></a></li> 35         <li><a href="Javascript:void(0)" hrefto="ddd"><img src="http://file25.mafengwo.net/M00/F2/06/wKgB4lNaHHCASXmDAAFtZsUxuwQ66.gonglve.w690.jpeg"></a></li> 36         <li><a href="javascript:void(0)" hrefto="ddd"><img src="http://file25.mafengwo.net/M00/2B/EE/wKgB4lNwdpeAbvZiAAWcFRXe2Po83.gonglve.w690.jpeg"></a></li> 37         <!-- <li><a href="javascript:void(0)" hrefto="ddd" target="_black"><img src="http://file25.mafengwo.net/M00/37/74/wKgB4lM9Hb-ARjpJAAOsX46Kq9w39.gonglve.w690.jpeg"></a></li> 38         <li><a href="javascript:void(0)" hrefto="ddd"><img src="http://file25.mafengwo.net/M00/F2/06/wKgB4lNaHHCASXmDAAFtZsUxuwQ66.gonglve.w690.jpeg"></a></li> 39         <li><a href="javascript:void(0)" hrefto="ddd"><img src="http://file25.mafengwo.net/M00/2B/EE/wKgB4lNwdpeAbvZiAAWcFRXe2Po83.gonglve.w690.jpeg"></a></li> --> 40     </ul> 41     <dl> 42         <span class="selected">1</span> 43         <span>2</span> 44         <span>3</span> 45         <!-- <span>4</span> 46         <span>5</span> 47         <span>6</span> --> 48          49     </dl> 50 </div> 51 </div> 52 <div style="height:200px;"></div> 53 <div id="wapListImage1"> 54     <ul> 55         <li><a href="javascript:void(0)" hrefto="ddd" target="_black"><img src="http://file25.mafengwo.net/M00/37/74/wKgB4lM9Hb-ARjpJAAOsX46Kq9w39.gonglve.w690.jpeg"></a></li> 56         <li><a href="javascript:void(0)" hrefto="ddd"><img src="http://file25.mafengwo.net/M00/F2/06/wKgB4lNaHHCASXmDAAFtZsUxuwQ66.gonglve.w690.jpeg"></a></li> 57         <li><a href="javascript:void(0)" hrefto="ddd"><img src="http://file25.mafengwo.net/M00/2B/EE/wKgB4lNwdpeAbvZiAAWcFRXe2Po83.gonglve.w690.jpeg"></a></li> 58     </ul> 59 </div> 60 <script type="text/javascript"> 61 ;(function(w,d){ 62     var device = (/android|webos|iphone|ipad|ipod|blackberry|iemobile|Opera mini/i.test(navigator.userAgent.toLowerCase())); 63     function WapImage(){ 64         this.options={ 65             dom: null, 66             speed:200, 67             isupdate:true, 68             time:3000, 69             leftOrright:'left', 70             isfor:false, 71             callBack:function(){} 72         }, 73         this.eventName={ 74             touchstart:'touchstart', 75             touchmove:'touchmove', 76             touchend:'touchend', 77         }, 78         this.point={ 79             x:5, 80             y:5, 81             pageX1:0, 82             pageX2:0, 83             pageY1:0, 84             pageY2:0 85         }, 86         this.page={ 87             bodyWidth:320, 88             domUL:null, 89             liList:null, 90             index: 0, 91             flag:false, 92             sTime:0, 93             eTime:0, 94             isDown:false, 95             mleft:0, 96             back:30, 97             moveId:[], 98             nextId:null, 99             prevId:null,100             isdom:false101         },102         this.Event={103             handleEvent: function(event,lib){104                 event = event ? event : window.event;105                 // console.log(event.type)106                 switch(event.type){107 108                     case "touchstart":109                         var touch = event.touches[0];110                     case "mousedown":111                         if(lib.page.isDown) return;112                         lib.page.isDown=true;113                         lib.page.sTime=lib.page.eTime=new Date().getTime();114
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表