移动端左右滚动导航,以及解决微信端不支持滚动导航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();问题就完美解决了!!!亲测有用,希望能帮助到各位。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值