WEB App----最近在写一个移动端滑动功能,说下爬坑经历

使用 iscroll 写移动端滑动功能的时候遇到了前人留下的问题:

在pc上使用正常,一旦换成手机(包括浏览器里的模拟手机)就会出现划不动,或者滑一次动一点的情况,首先呢这种情况肯定是iscroll 没有正常运行,但是什么造成的呢,经过我;两天研究才知道,在移动端的默认的滑动没有阻止掉,所以呢只要吧移动端的默认事件(滑动事件)阻止掉就ok了。但是问题又来了,该怎么阻止呢!下面看代码:

 

首先引入依赖的 iscroll.js 

<script src="js/iscroll.js"></script>

然后 iscroll.js 配置

<script>
    $(function() {
		//菜单框架自动获取高度
		var doc_H = $(document).height();
		$('.Menu_box').height(doc_H);
		window.onresize = function() {
			var doc_H = $(document).height();
			$('.Menu_box').height(doc_H);
		}
		var myScroll_left;
		var myScroll_right;
	})
//-------------------------------------------------------
//--------------------这一部分是我自己项目的配置项无关紧要
	function loaded(e) {
		myScroll_left = new IScroll('#left_Menu', {
			mouseWheel: true,
			click: true,
			momentum:true,  //开/关势能动画
			scrollbars:false,
			disableMouse: false,
		});
		myScroll_right = new IScroll('#right_Menu', {
			mouseWheel: true,
			click: true,
			momentum:true,  //开/关势能动画
			scrollbars:true,
			disableMouse: false,
			disablePointer: false,
		});
	}

// ---------------------------------------------------------
//    方法1:
//    在touch的事件监听方法上绑定第三个参数{ passive: false },
//    通过传递 passive 为 false 来明确告诉浏览器:事件处理程序调用 preventDefault 来阻止默认滑    //    动行为。
	document.addEventListener('touchmove', function(e) {
		console.log(e)
		e.preventDefault();
	}, {
		passive: false    //这一步是阻止默认事件的核心!
	});
</script>    

下面看一下 如果不使用 {passive:false} 来组织默认事件时报的错是否跟你的情况一样

 

当然还有另一总方法就是(博主用的上面的方法,这个自行调试哈):

* { touch-action: pan-y; } 
 使用全局样式样式去掉

如果 iscroll 有不懂得 可以去看下文档,其实很简单:http://caibaojian.com/iscroll-5/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值