滑动阈值_手把手教你实现web页面内容滑动效果

本文将手把手教你如何通过事件监听实现web页面内容的滑动效果,重点探讨滑动阈值的设置与应用。
摘要由CSDN通过智能技术生成
35dc92a1946934bfaae14acc070ca52b.png 作者 | 唐宋元明清2188 来源 | http://www.cnblogs.com/kybs0/ 标签的触摸/鼠标滑动事件,添加元素的切换动画,效果如下: 5f4038c23bdd74cb810a42c9c0c28dcc.gif

事件监听

鼠标事件和触摸事件监听:
componentDidMount() {     var teachingReportDiv = document.getElementById("teachingReport") as HTMLElement;   teachingReportDiv.onmousedown = this.onMouseDown;      teachingReportDiv.onmouseup = this.onMouseUp;        teachingReportDiv.addEventListener('touchstart', this.onTouchStart, false);        teachingReportDiv.addEventListener('touchmove', this.onTouchMove, false);        teachingReportDiv.addEventListener('touchend', this.onTouchEnd, false);    }
触摸事件,不能HTMLElement.ontouchstart添加事件监听,可以EventListener或者在标签中添加。
 
"teachingReport" onTouchStart={(event) => this.onTouchStart(event)}/>触摸事件有以下几个: touchstart事件:手指触摸时候触发(支持多指触发)touchmove事件:手指在滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件可以阻止滚动,当然也不能滥用否则会影响原有页面的上下滚动等。touchend事件:手指从屏幕上离开的时候触发touchcancel事件:当系统停止跟踪触摸的时候触发。关于这个事件的确切出发时间,文档中并没有具体说明。。。不建议使用

事件处理

添加全局字段:
 locationStartX: number = 0;    locationEndX: number = 0;
滑动处理,超出滑动阈值后,更新相关状态。
 onTouchStart = (event) => {         this.locationStartX = event.targetTouches[0].pageX;    }    onTouchMove = (event) => {        // event.preventDefault();       this.locationEndX = event.targetTouches[0].pageX;     }     onTouchEnd = (event) => {         const locationChangedX = this.locationEndX < this.locationStartX;        if (Math.abs(locationChangedX) > 10) {            const isSlidingToRight=locationChangedX<0;       }   }

添加切换动画

动画,可以通过state参数触发
this.onTouchStart(event)}/>动画数据参考://动画
   @keyframes showFromLeft {    from {      opacity: 0;      transform: translateX(-100px);     }      to {        opacity: 1;        transform: translateX(0px);    }   }   @keyframes showFromRight {     from {      opacity: 0;       transform: translateX(100px);     }     to {      opacity: 1;       transform: translateX(0px);     }   }  @keyframes hideToLeft {     from {       opacity: 1;      transform: translateX(0px);     }     to {      opacity: 0;      transform: translateX(-100px);    }   }   @keyframes hideToRight {    from {       opacity: 1;      transform: translateX(0px);     }     to {      opacity: 0;       transform: translateX(100px);    }   }
 本文完~958d3be82dc79293857a52563b6c7949.png9c5732f0d169c41380e2b536c3372b50.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值