移动端获取页面滚动条距离顶部的距离,以及拖动惯性问题
2018-02-07 16:56
776 查看
document.getElementsByTagName('section')[0].addEventListener('touchmove',function(e){ console.log("开始滑动了touchstart"); let a = document.documentElement.scrollTop; console.log("滑动距离为:",a); });jquery sectionDom.on("touchmove",function () {
console.log("触摸滚动1")
let scroll = $(document).scrollTop();
});
//touchmove 手指不放发生 $('body').on('touchmove',function(){ $('.sob').css({'display':'none'}) //隐藏div }) //touchend 手指放开发生 $('body').on('touchend',function(){ $('.sob').css({'display':'initial','position':'fixed'}) //显示,固定div }) // 滑动滚动条 $(window).scroll(function(){ // 滚动条距离顶部的距离 大于 200px时 if($(window).scrollTop() >= 200){ $(".scroll_top").fadeIn(1000); // 开始淡入 } else{ $(".scroll_top").stop(true,true).fadeOut(1000); // 如果小于等于 200 淡出 } });
拖动惯性 惯性原理: 产 b496 生的速度 = 移动距离 / 移动时间 距离 = 松开的坐标 - 上次的坐标 (距离差) 时间 = 松开的时间 - 按下的时间 (时间差) //拖动 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)'; }
相关文章推荐
- 关于获取到页面顶部的距离的兼容问题
- 动态获取滚动条位置,距离页面顶部距离scrollTop,两种方法任你选,封装完毕,拿去不谢!!!
- $_SERVER变量 以及 PHP 使用 $_SERVER['PHP_SELF'] 获取当前页面地址及其安全性问题
- js获取可视化区域的宽和高以及滑动条距离顶部的距离
- jquery设置滚动条距离页面顶部的高度
- js获取滚动条距离浏览器顶部,底部的高度,兼容ie和firefox
- 中间部分滚动记录div内滚动条的位置, 以及将页面分为三部分组成解决position:fixed在ios下失效问题
- js获取滚动条距离浏览器顶部,底部的高度,兼容ie和firefox
- HTML页面滚动时获取离页面顶部的距离2种实现方法
- javaweb登录页面验证码验证以及session中验证码值获取不同步的问题
- 获取浏览器顶部距离,可见距离,屏幕宽度,滚动条保持状态,滚动条距离顶部,底部的距离,屏幕分辨率等
- javascript和Jq获取和设置页面元素到顶部、左部距离、宽高元素卷入部分(scroll、scrollTop、scrollLeft、offset、offsetTop、offsetLeft)
- 获取网页可见区域高度以及滚动条等信息的问题
- js获取滚动条距离浏览器顶部,底部的高度
- javaScript中getBoundingClientRect获取div盒子到页面浏览器顶部的距离
- jQuery中获取文档的高度、可视区域高度以及滚动条距页面顶部的高度
- 解决ScrollView下嵌套ListView/GridView进页面不在顶部的问题以及数据显示不全的问题( 只显示一行)
- 移动端上下滑动swiper,第二个页面内容大于屏幕尺寸,现在的问题是,超出部分无法通过滚动条下滑查看。
- 如何使用jquery获取 (滚动条)距离(页面底部)的距离
- [HTML] 页面滚动时,获取离页面顶部的距离