移动端滑动轮播

//滑动轮播图封装
    // ObanSon        banner
    // ObanFth        banner外边的父盒子
    // ObanIconSon    banner下边的小圆点
    // ObanIconClass  设置小圆点颜色的类名
  function ObannerBox(ObanSon, ObanFth, ObanIconSon, ObanIconClass) {
    var OtouchEnd,
      OtouchMove,
      OtouchStart,
      Obanindex,
      ObanWidth,
      ObanMove,
      ObanMoveStart,
      Oban_Mslide,
      ObanRightIndex,
      ObanLeftIndex = 0;
    // OtouchEnd      触摸事件结束是的坐标
    // OtouchStart    触摸事件开始时的坐标
    // OtouchMove     触摸事件移动时的坐标
    // Obanindex      当前banner图的下标
    // ObanWidth      当前banner图的宽度
    // ObanMove       当前banner外边父盒子应该所在的位置
    // ObanMoveStart  当前banner左右滑动时移动的距离
    // Oban_Mslide    当前banner外边父盒子的宽度
    //ObanRightIndex  banner右滑时下面小圆点的下标位置
    //ObanLeftIndex  banner左滑时下面小圆点的下标位置
    document.addEventListener("touchstart", function(e) {
      // /^(?:INPUT|TEXTAREA|A)$/.test(e.target.tagName)||e.preventDefault();
    });
    $(ObanSon).each(function(index, item) {
      (function(index) {
        $(item).on("touchstart", function() {
          $(ObanFth).css({
            transition: "all 0s linear 0s"
          });
          Obanindex = index;
          ObanWidth = Math.ceil($(ObanSon).width());
          Oban_Mslide = $(ObanFth).width() - ObanWidth;
          // console.log(Oban_Mslide + "ObanMslide");
          //触摸时banner图左右滑动
          $(ObanFth).on("touchmove", function(e) {
            OtouchMove = e.originalEvent.targetTouches[0].pageX;
            ObanMoveStart = OtouchMove - OtouchStart;
            ObanMove = -(Obanindex * ObanWidth) + ObanMoveStart;
            $(ObanFth).css({
              transform: "translateX(" + ObanMove + "px)"
            });
          });
          //用于获取开始时的触摸坐标
          $(ObanFth).on("touchstart", function(e) {
            OtouchStart = e.originalEvent.targetTouches[0].pageX;
          });

          //触摸事件结束
          $(ObanFth).on("touchend", function(e) {
            //设置滑动效果 时长
            $(ObanFth).css({
              transition: "all .5s linear 0s"
            });
            OtouchEnd = e.originalEvent.changedTouches[0].pageX;
            //判断向右滑动超出33%时banner父盒子的位置
            if (ObanMoveStart < -ObanWidth / 3) {
              // console.log(Obanindex + "sss");
              $(ObanFth).css({
                transform: "translateX(" + -(Obanindex + 1) * ObanWidth + "px)"
              });
              ObanRightIndex = Obanindex + 1;
              $(ObanIconSon)
                .eq(ObanRightIndex)
                .addClass(ObanIconClass)
                .siblings()
                .removeClass(ObanIconClass);
              if (Oban_Mslide < (Obanindex + 1) * ObanWidth) {
                $(ObanFth).css({
                  transform: "translateX(" + -Oban_Mslide + "px)"
                });
              }
              //判断向左滑动超出33%时banner父盒子的位置
            } else if (ObanMoveStart > ObanWidth / 3) {
              $(ObanFth).css({
                transform: "translateX(" + -(Obanindex - 1) * ObanWidth + "px)"
              });
              ObanLeftIndex = Obanindex - 1;
              if (ObanLeftIndex < 0) {
                ObanLeftIndex = 0;
              }
              $(ObanIconSon)
                .eq(ObanLeftIndex)
                .addClass(ObanIconClass)
                .siblings()
                .removeClass(ObanIconClass);
              if (ObanMove > 0) {
                $(ObanFth).css({
                  transform: "translateX(" + 0 + "px)"
                });
              }

              //判断向左或向右滑动不超出33%时banner父盒子的位置
            } else if (
              ObanMoveStart >= -ObanWidth / 3 &&
              ObanMoveStart <= ObanWidth / 3
            ) {
              ObanMoveStart = 0;
              $(ObanFth).css({
                transform: "translateX(" + -(Obanindex * ObanWidth) + "px)"
              });
              // console.log(-(Obanindex * ObanWidth));
            }
          });
        });
      })(index);
    });
  }
<div class="banner">
        <ul class="slides">
            <li></li>
            <li></li>
            <li></li>
        </ul>
        <ol>
            <li class="ban_icon"></li>
            <li></li>
            <li></li>
        </ol>
        <div class="down_sawtooth"></div>
        <ul class="m_slide">
            <li><img src="img/m_banner1.jpg" alt=""></li>
            <li><img src="img/m_banner2.jpg" alt=""></li>
            <li><img src="img/m_banner3.jpg" alt=""></li>
        </ul>
    </div>
 .banner{width: 100%;overflow: hidden;position: relative;}
    .banner ul{width: 300%;}
    .banner ul li img{width: 100%;vertical-align: middle;}
    .banner ul li{float: left;width: 33.3%;}
    .banner ol li{cursor: pointer;width: .075rem;height: .075rem;border-radius: 50%;background: white;margin: 0 .05rem;float: left;}
.banner ol{position:absolute;bottom:.1rem;left: 50%;margin-left: -.3rem;z-index: 997;}
.ban_icon{background: #5eb832 !important;}

 

posted @ 2018-08-22 17:44  false-  阅读(378)  评论(0)    收藏  举报