溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

原生javascript如何實(shí)現(xiàn)移動(dòng)端滑動(dòng)banner效果

發(fā)布時(shí)間:2021-06-29 09:47:49 來(lái)源:億速云 閱讀:100 作者:小新 欄目:web開(kāi)發(fā)

這篇文章給大家分享的是有關(guān)原生javascript如何實(shí)現(xiàn)移動(dòng)端滑動(dòng)banner效果的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

具體內(nèi)容如下

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
 <meta name="apple-mobile-web-app-capable" content="yes">
 <meta content="telephone=yes" name="format-detection" />
 <meta name="apple-mobile-web-app-status-bar-style" content="white">
 <meta name="x5-fullscreen" content="true">
 <meta name="apple-touch-fullscreen" content="yes">
 <title>Document</title>
 <style>
  *{margin:0;padding:0;}
  .box{
   height:200px;
   width:100%;
   overflow: hidden;
  }
  .movebox{
   height:200px;
   width:9000px;
   padding:0;
   position:relative;
   left:0;
  }
  .movebox li{
   height:200px;
   float:left;
   list-style:none;
   font-size:30px;
   color:#fff;
  }

 </style>
 <script>
  window.onload = function(){

   var moveX,  //手指滑動(dòng)距離
    endX,  //手指停止滑動(dòng)時(shí)X軸坐標(biāo)
    cout = 0, //滑動(dòng)計(jì)數(shù)器
    moveDir; //滑動(dòng)方向
   var movebox = document.querySelector(".movebox"); //滑動(dòng)對(duì)象
   var Li = movebox.querySelectorAll("li"); //滑動(dòng)對(duì)象item
   var width = parseInt(window.getComputedStyle(movebox.parentNode).width); //滑動(dòng)對(duì)象item的寬度

   movebox.style.width = (width*4) + "px"; //設(shè)置滑動(dòng)盒子width
   for(var i = 0; i < Li.length; i++){
    Li[i].style.width = width + "px"; //設(shè)置滑動(dòng)item的width,適應(yīng)屏幕寬度
   }

   //觸摸開(kāi)始
   function boxTouchStart(e){
    var touch = e.touches[0]; //獲取觸摸對(duì)象
    startX = touch.pageX; //獲取觸摸坐標(biāo)
    endX = parseInt(movebox.style.webkitTransform.replace("translateX(", "")); //獲取每次觸摸時(shí)滑動(dòng)對(duì)象X軸的偏移值
   }

   function boxTouchMove(e){
    var touch = e.touches[0];
    moveX = touch.pageX - startX; //手指水平方向移動(dòng)的距離

    if(cout == 0 && moveX > 0){  //剛開(kāi)始第一次向左滑動(dòng)時(shí)
     return false;
    }

    if(cout == 3 && moveX < 0){  //滑動(dòng)到最后繼續(xù)向右滑動(dòng)時(shí)
     return false;
    }

    movebox.style.webkitTransform = "translateX(" + (endX + moveX) + "px)"; //手指滑動(dòng)時(shí)滑動(dòng)對(duì)象隨之滑動(dòng)
   }

   function boxTouchEnd(e){
    moveDir = moveX < 0 ? true : false;  //滑動(dòng)方向大于0表示向左滑動(dòng),小于0表示向右滑動(dòng)
    //手指向左滑動(dòng)
    if(moveDir){

     if(cout<3){
      movebox.style.webkitTransform = "translateX(" + (endX-width) + "px)";
      cout++;
     }
    //手指向右滑動(dòng)
    }else{
     //滑動(dòng)到初始狀態(tài)時(shí)返回false
     if(cout == 0){
      return false;
     }else{
      movebox.style.webkitTransform = "translateX(" + (endX+width) + "px)";
      cout--;
     }
    }
   }

   //滑動(dòng)對(duì)象事件綁定
   movebox.addEventListener("touchstart", boxTouchStart, false);
   movebox.addEventListener("touchmove", boxTouchMove, false);
   movebox.addEventListener("touchend", boxTouchEnd, false);
  }
 </script>
</head>

<body >
 <div class="box">
  <ul class="movebox" >
   <li >1</li>
   <li >2</li>
   <li >3</li>
   <li >4</li>
  </ul>
 </div>
</body>

</html>

感謝各位的閱讀!關(guān)于“原生javascript如何實(shí)現(xiàn)移動(dòng)端滑動(dòng)banner效果”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI