核心提示:今天开发一个移动端的左右滚动导航,用到了touchmove属性。本地测试没问题,放在移动端的浏览器也没问题,微信开发工具里也没有问题,但是放在微信公众号里打开之后,滑动效果不起作用。从网上找了一下解决...
今天开发一个移动端的左右滚动导航,用到了touchmove属性。本地测试没问题,放在移动端的浏览器也没问题,微信开发工具里也没有问题,但是放在微信公众号里打开之后,滑动效果不起作用。从网上找了一下解决办法,原来是要在touchmove方法里先调用一下event.preventDefault();。至于原因就不说了,大家可以去百度。下面为大家附上代码:
这是修改前的代码:
//左右滑动导航 $(function(){ $(".nav-list").on('touchstart',function(e){ //获取滑动前的位置 startX = e.originalEvent.changedTouches[0].pageX; }); $(".nav-list").on("touchmove",function(e){ //获取滑动屏幕后的位置 endX = e.originalEvent.changedTouches[0].pageX; //获取滑动距离 distanceX = endX-startX; //判断滑动方向 if(distanceX>0){ //向右滑动 // $(".nav-list li:first-child").css("margin-left","0"); $(".nav-list li:first-child").animate({marginLeft:""},120); }else if(distanceX<0){ //向左滑动 //$(".nav-list li:first-child").css("margin-left","-105%"); $(".nav-list li:first-child").animate({marginLeft:"-105%"},120); } }); });
这是修改后的代码:
//左右滑动导航 $(function(){ $(".nav-list").on('touchstart',function(e){ //获取滑动前的位置 startX = e.originalEvent.changedTouches[0].pageX; }); $(".nav-list").on("touchmove",function(e){ //解决微信端不支持touchmove e.preventDefault(); //**********获取滑动屏幕后的位置*********** endX = e.originalEvent.changedTouches[0].pageX; //获取滑动距离 distanceX = endX-startX; //判断滑动方向 if(distanceX>0){ //向右滑动 // $(".nav-list li:first-child").css("margin-left","0"); $(".nav-list li:first-child").animate({marginLeft:""},120); }else if(distanceX<0){ //向左滑动 //$(".nav-list li:first-child").css("margin-left","-105%"); $(".nav-list li:first-child").animate({marginLeft:"-105%"},120); } }); });
其实就是在touchmove方法里首先调用一下event.preventDefault();问题就完美解决了!!!亲测有用,希望能帮助到各位。