国庆前几天花了点时间写一个整屏滑动的移动页面的demo,时间短暂还有很多东西没写。
跟基友 http://segmentfault.com/blog/laopopo/1190000000708417 差不多,但思路上不太一样,大家可以看看他的源码感受一下其中的区别。
从监听开始,用一个变量记录触摸的起点位置,然后move的时候用move的触发的clientY的值减去起点位置,让页面滑动那个差值的距离,这个距离可能为负为正,然后end的时候判断需要往哪边修正位置。
end的时候我做的处理是先判断滑动的方向,(这个怎么判断呢?在move的时候用一个变量记录move的位置,然后用最后一个减去start的时候记录的位置,差值正负就是方向了)我预先计算了每一个div离页面最顶部的位置,然后倒序找第一个为负的元素,如果同时是向上滑动且下一个元素冒出头来的距离大于六分之一屏幕,就把下面的拉上来,如果同时是向下滑动且上一个元素冒出尾部的距离大于六分之一就把上面的拉下来。
其中碰到的坑是move的时间通过return false
无法阻挡默认事件,只能e.preventDefault()
,但是电脑上模拟移动页面可以使用return false
http://segmentfault.com/q/1010000000707907