移动端拖动惯性
来源:互联网 发布:美国最高法院知乎 编辑:程序博客网 时间:2024/06/05 10:43
拖动惯性
惯性原理: 产生的速度 = 移动距离 / 移动时间 距离 = 松开的坐标 - 上次的坐标 (距离差) 时间 = 松开的时间 - 按下的时间 (时间差)
//拖动
var slide = document.querySelector('.header .h-nav'), nav = document.querySelector('.header .nav'), // 开始的偏移 startX = 0, // 保存的偏移 translateX = 0, // 手指坐标 startFinger = 0, maxWidth = nav.offsetWidth - slide.offsetWidth, lastTime = 0; //按下的时间 console.log(maxWidth); slide.addEventListener('touchstart',function (e) { e.stopPropagation(); startFinger = e.changedTouches[0].clientX; nav.style.WebkitTransition = nav.style.transition = ''; startX = translateX; lastTime = Date.now(); console.log(lastTime); }); slide.addEventListener('touchmove',function (e) { e.stopPropagation(); var nowFinger = e.changedTouches[0].clientX, distance = nowFinger - startFinger; translateX = distance + startX; // 弹性 if(translateX > 0 ){ //拖动系数. 拉力的感觉 translateX *= 0.4; }else if( translateX < -maxWidth){ //最后. translateX = distance*0.4 + startX; } shift(translateX); }) slide.addEventListener('touchend',function (e) { /* 惯性原理: 产生的速度 = 移动距离 / 移动时间 距离 = 松开的坐标 - 上次的坐标 (距离差) 时间 = 松开的时间 - 按下的时间 (时间差) */ var nowFinger = e.changedTouches[0].clientX, distance = nowFinger - startFinger, //距离差 timeDis = Date.now() - lastTime, //时间差 speed = (distance / timeDis)*100; console.log(speed); //很小 *倍数 // 惯性 translateX += speed; // 边界 ,弹回去 if(translateX > 0){ translateX = 0; }else if(translateX < -maxWidth){ translateX = -maxWidth; } // 添加贝塞尔曲线 nav.style.WebkitTransition = nav.style.transition = 'transform 500ms cubic-bezier(0.1, 0.57, 0.1, 1)'; shift(translateX); }) function shift(value){ nav.style.WebkitTransform = nav.style.transform = 'translateX('+value+'px)'; }
阅读全文
0 0
- 移动端拖动惯性
- 移动端拖动集合(适配下的边界值,点透问题,细节处理,惯性的运用,行内控制宽度)
- CCSprite的惯性拖动
- 移动端实现排序拖动
- 惯性
- 惯性
- Unity拖动摄像机加上惯性滑动的效果
- 鼠标拖动层移动
- 鼠标拖动层移动
- 鼠标拖动层移动
- 拖动图片移动
- 鼠标拖动div移动
- unity 拖动物体移动
- jq div拖动(移动端和pc端)
- 实现移动端单手指拖动+双手指拉大放小
- html5移动端:元素拖动/触控touch(js)(jquery)
- HTML5 移动端div块跟随手指拖动
- 移动端 touch 手机拖动 css停止问题
- Kotlin实现ViewPager的左右滑动和listview的简单使用
- mysql 入门基本命令
- 算法作业_40(2017.6.22第十八周)
- CentOS安装GCC-4.8.5
- TCP/IP通信和UDP通信之间的区别
- 移动端拖动惯性
- Linux新手必备:8个实用的Linux终端命令
- Spring手动获取指定Bean
- Java Socket套接字
- Python3 BeautifulSoup爬虫 POJ自动提交
- kafka数据在zookeeper的存储结构(基于kafka0.8版本)
- 后台常见报错
- Tomcat单独可以启动,在Eclipse中启动访问404
- Ubuntu14.04 启动terminal进入命令行之前有log信息输出