在移動端頁面上,如果要實現【頂部輪播,手指觸摸左右滑動】
我的方案是,通過監聽滑動,阻止默認事件來完成
div.addEventListener('touchmove',function(event){
event.preventDefault();//阻止瀏覽器的默認事件
})
這樣,左右滑動可以完成了,但是觸摸這個div的時候,頁面不能上下滑動了,怎么辦?
當touchmove的時候,實時改變window的scrolltop值?
這樣會有原生的滑動效果嗎?
大家有什么解決方案
問題已經解決了,思路是
var xx,yy,XX,YY,swipeX,swipeY ;
div.addEventListener('touchstart',function(event){
xx = event.targetTouches[0].screenX ;
yy = event.targetTouches[0].screenY ;
swipeX = true;
swipeY = true ;
})
div.addEventListener('touchmove',function(event){
XX = event.targetTouches[0].screenX ;
YY = event.targetTouches[0].screenY ;
if(swipeX && Math.abs(XX-xx)-Math.abs(YY-yy)>0) //左右滑動
{
event.stopPropagation();//組織冒泡
event.preventDefault();//阻止瀏覽器默認事件
swipeY = false ;
//左右滑動
}
else if(swipeY && Math.abs(XX-xx)-Math.abs(YY-yy)<0){ //上下滑動
swipeX = false ;
//上下滑動,使用瀏覽器默認的上下滑動
}
})
可以判斷下move大概方向,然后水平的時候阻止默認行為,其他時候不阻止就OK了
其實 單純判斷move是水平也是不行的,如果用戶是斜上地滑怎么判斷?
我的想法是,在這個輪播上實現這樣的一個覆蓋層
當用戶從A觸發了touchstart 結束或者move到b,或者b start,在c上結束,判定為右滑。左滑則相反。

