滑动图片的实现方式 2013-12-23

研究了一上午的图片滑动事件,有点小成。

css代码是这样的:

<ul class="ul-images" id="ulImages">
                   <li  style="display:block;">
                        <img src="images/home/1.jpg" />
                        <p class="flex-caption">Swipe this picture, left or right!</p>
                    </li>
                    <li style="display:none;">
                        <img src="images/home/2.jpg" />
                        <p class="flex-caption">Come on! Swipe the picture!</p>
                    </li>
                    <li  style="display:none;">
                        <img src="images/home/3.jpg" />
                        <p class="flex-caption">Really! Please swipe the picture</p>
                    </li>
                    <li  style="display:none;">
                        <img src="images/home/4.jpg" />
                        <p class="flex-caption">Well? Are you gonna swipe?!</p>
                    </li>
              </ul>

然后要实现图片的轮流切换,在网上找了一下,

  //左右滑动图片的事件。
    var startX, startY, endX, endY;
     document.getElementById("ulImages").addEventListener("touchstart", touchStart, false);
     document.getElementById("ulImages").addEventListener("touchmove", touchMove, false);
     document.getElementById("ulImages").addEventListener("touchend", touchEnd, false);
       function touchStart(event) {
    event.preventDefault();
                var touch = event.touches[0];
                 startY = touch.pageY;
                startX = touch.pageX;
            }
             function touchMove(event) { 

                var touch = event.touches[0];
                  endX = touch.pageX;
          }
            function touchEnd(event) { event.preventDefault();
    var index=$("#ulImages>li").index($("#ulImages>li:visible"));
              //$("#ulImages>li").eq(index).hide();
      if ((startX - endX) < 5) {//右滑动
      //alert("左滑动");alert("开始"+startX);
          if(index>0){$("#ulImages>li").eq(index).hide();index--;}
                // alert("结束"+endX);
               }else if((endX - startX) < 5){//左滑动
      // alert("右滑动");alert("开始"+startX);
       if(index<$("#ulImages>li").length-1){$("#ulImages>li").eq(index).hide();index++;}
     //  alert("结束"+endX);
       }
               $("#ulImages>li").eq(index).show();
            
            }

 这样做出来的效果很生涩,切换不灵活,只需要阻止浏览器的默认行为即可.在各个事件的开始加上event.preventDefault()即可。但是这个时候我发现网右边滑动时,endX-startX>0,反之往左边滑动时startx-startY>0.很纠结这个。不过还好问题解决了。。。。哦行

正确的如下:

  //左右滑动图片的事件。
    var startX, startY, endX, endY;
     document.getElementById("ulImages").addEventListener("touchstart", touchStart, false);
     document.getElementById("ulImages").addEventListener("touchmove", touchMove, false);
     document.getElementById("ulImages").addEventListener("touchend", touchEnd, false);
       function touchStart(event) {
    event.preventDefault();
                var touch = event.touches[0];
                 startY = touch.pageY;
                startX = touch.pageX;
            }
             function touchMove(event) { event.preventDefault();
                var touch = event.touches[0];
                 //endY = (startY - touch.pageY);
               endX = touch.pageX;
          }
            function touchEnd(event) { event.preventDefault();
    var index=$("#ulImages>li").index($("#ulImages>li:visible"));
              //$("#ulImages>li").eq(index).hide();
      if ((startX - endX) > 5) {//右滑动
      //alert("左滑动");alert("开始"+startX);
          if(index>0){$("#ulImages>li").eq(index).hide();index--;}
                // alert("结束"+endX);
               }else if((endX - startX) > 5){//左滑动
      // alert("右滑动");alert("开始"+startX);
       if(index<$("#ulImages>li").length-1){$("#ulImages>li").eq(index).hide();index++;}
     //  alert("结束"+endX);
       }
               $("#ulImages>li").eq(index).show();
            
            }
 })

接着我还会找一下通过position来实现图品切换的方法。

 

转载于:https://www.cnblogs.com/jiaojiaome/p/3487188.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值