touchmove滑动菜单

首先我们先把基础样式做出来

 <style type="text/css">
  *{
    padding: 0;
    margin:0; 
  }
    .container{
      width: 100%;
      height: 200px;
      position: relative;
      overflow: hidden;
    }
    .ulbox{
      width: 120%;
      height: 100%;
      position: absolute;
      left: 0;
      top:0;
      overflow: hidden;

    }
    .ulbox li{
      box-sizing: border-box;
      text-align: center;
      line-height: 200px;
      font-size: 2rem;      
      list-style: none;
      float: left; 
      width: 20%; 
      height:100% ;
      background-color: rgba(123,215,196,0.5);
      border-left: white 0.2rem solid;
    }
  </style>
</head>
<body>
    <div class="container">
      <ul class="ulbox">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
      </ul>
    </div>
</body>    

在这里插入图片描述
主容器的·overflow: hidden;很重要不然就会导致如下图的结果
在这里插入图片描述
重点是js的代码
首先获取ul的class,以及设置一个初始化的起始点和偏移距离,

 var ulbox = document.getElementsByClassName("ulbox")[0];
     var startX = 0;
     var leftX = 0;

然后通过touchstart的event的.changedTouches[0]的clientX,获取鼠标点下去x轴初始值;
在这里插入图片描述
在通过touchmove的.changedTouches[0]的clientX,实时获取x轴的值;
再让其相减得出偏移值;
让后为了防止,偏移量超出ul的宽度,所以

 if (leftX > 0) {
              leftX = 0;
          }
          if (leftX < -200) {
              leftX = -200;
          }

让其值超出界限时,变为临界值。
在这里插入图片描述
附上原代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>dmeo</title>

  <style type="text/css">
  *{
    padding: 0;
    margin:0; 
  }
    .container{
      width: 100%;
      height: 200px;
      position: relative;
      overflow: hidden;
    }
    .ulbox{
      width: 120%;
      height: 100%;
      position: absolute;
      left: 0;
      top:0;
      overflow: hidden;

    }
    .ulbox li{
      box-sizing: border-box;
      text-align: center;
      line-height: 200px;
      font-size: 2rem;      
      list-style: none;
      float: left; 
      width: 20%; 
      height:100% ;
      background-color: rgba(123,215,196,0.5);
      border-left: white 0.2rem solid;
    }
  </style>
</head>
<body>
    <div class="container">
      <ul class="ulbox">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
      </ul>
    </div>
    <script type="text/javascript">
     var ulbox = document.getElementsByClassName("ulbox")[0];
     var startX = 0;
     var leftX = 0;
      ulbox.addEventListener("touchstart",function(e){
        console.log(e)
        startX =  e.changedTouches[0].clientX;
     })
     ulbox.addEventListener("touchmove",function(e){
          leftX = e.changedTouches[0].clientX - startX;
          if (leftX > 0) {
              leftX = 0;
          }
          if (leftX < -200) {
              leftX = -200;
          }
          console.log(leftX)
          ulbox.style.left = ""+ leftX +"px"

     })
    </script>
</body>
</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JavaScript中,`touchend`, `touchstart`, 和 `touchmove` 这三个事件分别对应触摸屏幕的结束、开始和移动阶段,常用于实现滑动图片或手势操作。下面是一个简要的介绍: 1. `touchstart` (触摸开始):当用户手指接触屏幕并开始滑动时触发,此时你可以获取到触点的坐标(如位置、数量等)以及一些其他触控信息,通常用于初始化滑动状态。 ```javascript function handleTouchStart(e) { var touch = e.touches; startTouchPosition = touch.pageX; // ... 其他初始化操作 } ``` 2. `touchmove` (触摸移动):用户手指在屏幕上持续移动时触发,你可以根据上一次的`touchstart`位置来计算当前的滑动距离。 ```javascript function handleTouchMove(e) { var touch = e.touches; var currentTouchPosition = touch.pageX; var slideDistance = currentTouchPosition - startTouchPosition; // 更新图片位置 moveImage(slideDistance); } ``` 3. `touchend` (触摸结束):当用户抬起手指时触发,这时滑动已经完成,你可以在此时完成相关的动作,比如停止滑动效果,或者处理用户的交互选择。 ```javascript function handleTouchEnd(e) { // 结束滑动动画 stopSlide(); // 可能的后续操作,如图片缩放或切换等 } ``` 在实际应用中,这些事件通常需要在HTML元素上添加`touchstart`, `touchmove`, 和 `touchend` 事件监听器,并且在每个函数内部管理滑动状态和响应行为。记得在处理完事件后清除事件监听,以避免内存泄漏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值