Home  >  Article  >  Web Front-end  >  How to implement finger sliding carousel on mobile terminal in js

How to implement finger sliding carousel on mobile terminal in js

亚连
亚连Original
2018-06-14 13:49:042586browse

Below I will share with you an example of js native implementation of the finger sliding carousel effect on the mobile terminal. It has a good reference value and I hope it will be helpful to everyone.

is as follows:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <title>Document</title>
</head>
<style>
  html{height:100%;}
  body{width: 100%;height:100%;margin:0;overflow: hidden;}
  .wrap{position: relative;overflow: hidden;}
  .box{position: absolute;list-style: none;left:0;top:0;padding:0;margin:0;}
  .box li{float:left;}
  .box{
    position: relative;
    height: 2000px;
    width: 100%;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background: red;
  }
  .box1{
    height: 2000px;
  }
  .box2{
    background: yellow;
  }
  .box3{
    background: yellowgreen;
  }
  .box4{
    background: orange;
  }
  .box5{
    background: cyan;
  }
</style>
<body>
<p class="wrap">
  <ul class="box">
    <li><p class="box1 box2">11111</p></li>
    <li><p class="box1 box3">2222</p></li>
    <li><p class="box1 box4">3333</p></li>
    <li><p class="box1 box5">4444</p></li>
  </ul>
</p>
<script>
  var aLi = document.querySelectorAll(".box li");
  var box = document.querySelector(&#39;.box&#39;);
  var wrap = document.querySelector(&#39;.wrap&#39;);
  var aLiWidth = box.offsetWidth;
  console.log(&#39;aLiWidth: &#39; + aLiWidth)
  wrap.style.height = aLi[0].offsetHeight + &#39;px&#39;;
  // 设置盒子的宽度
  box.style.width = aLi.length*100 + &#39;%&#39;;
  for(var i=0;i<aLi.length;i++){
    aLi[i].style.width = 1/aLi.length * 100 + &#39;%&#39;;
  };
  // 初始化手指坐标点
  var startPoint = 0;
  var startEle = 0;
  //手指按下
  wrap.addEventListener("touchstart",function(e){
    startPoint = e.changedTouches[0].pageX;
    startEle = box.offsetLeft;
  });
  //手指滑动
  wrap.addEventListener("touchmove",function(e){
    var currPoint = e.changedTouches[0].pageX;
    var disX = currPoint - startPoint;
    var left = startEle + disX;
    box.style.left = left + &#39;px&#39;;
  });
  //当手指抬起的时候,判断图片滚动离左右的距离,当
  wrap.addEventListener("touchend",function(e){
    var left = box.offsetLeft;
// 判断正在滚动的图片距离左右图片的远近,以及是否为最后一张或者第一张
    var currNum = Math.round(-left/aLiWidth);
    currNum = currNum>=(aLi.length-1) ? aLi.length-1 : currNum;
    currNum = currNum<=0 ? 0 : currNum;
    box.style.left = -currNum*wrap.offsetWidth + &#39;px&#39;;
  })

</script>

</body>
</html>

The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.

Related articles:

How to implement high-performance loading sequence in javascript

##How to implement global registration in axios

How to implement login verification jump using Vue Flask (detailed tutorial)

About usage of connect decorator in react-redux

The above is the detailed content of How to implement finger sliding carousel on mobile terminal in js. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn