|
@@ -141,26 +141,31 @@ const isChangePage = cha => {
|
|
|
return false;
|
|
|
};
|
|
|
let time = Date.now();
|
|
|
+let c = 0;
|
|
|
const touchstart = e => {
|
|
|
- time = Date.now();
|
|
|
+ time = Date.now();
|
|
|
+ c = main.value.scrollTop < 5;
|
|
|
startY = e.changedTouches[0].clientY;
|
|
|
};
|
|
|
|
|
|
const touchend = e => {
|
|
|
const cha = startY - e.changedTouches[0].clientY;
|
|
|
- if(Date.now() - time < 50) return
|
|
|
+ if (Date.now() - time < 50) return;
|
|
|
if (!isChangePage(cha)) return;
|
|
|
// cha > 0 向上滑动手指
|
|
|
// cha < 0 向下滑动手指
|
|
|
- if (cha <= 0 && cha >= -50) return;
|
|
|
- if (cha > 0 && cha < 100) return;
|
|
|
+ // 初始位置滚动为0的,则判断距离25即可
|
|
|
+ if (Math.pow(cha, 2) < 40000 && !c) return;
|
|
|
// 距离足够则滑动到下一页;
|
|
|
let n = cha > 0 ? 1 : -1;
|
|
|
let dn = n + page.value;
|
|
|
let len = 9;
|
|
|
isUp.value = n === 1;
|
|
|
- if (dn < 0) return (dn = len);
|
|
|
- if (dn > len) return (dn = 0);
|
|
|
+ // if (dn < 0) dn = len;
|
|
|
+ // if (dn > len) dn = 0;
|
|
|
+ if (dn < 0) return;
|
|
|
+ if (dn > len) return;
|
|
|
+
|
|
|
page.value = dn;
|
|
|
nextTick(() => {
|
|
|
main.value.scrollTop = 0;
|
|
@@ -168,16 +173,8 @@ const touchend = e => {
|
|
|
};
|
|
|
|
|
|
const touchmove = e => {
|
|
|
- let nodes = main.value.childNodes || [];
|
|
|
- let sondiv = null;
|
|
|
- for (let i = 0; i < nodes.length; i++) {
|
|
|
- const ele = nodes[i];
|
|
|
- if (ele.localName !== 'div') continue;
|
|
|
- if (sondiv) break;
|
|
|
- sondiv = ele;
|
|
|
- }
|
|
|
- let h = main.value.offsetHeight + main.value.scrollTop;
|
|
|
- if (main.value.scrollTop <= 1 && h > sondiv.offsetHeight + 10) e.preventDefault();
|
|
|
+ const cha = startY - e.changedTouches[0].clientY;
|
|
|
+ if (main.value.scrollTop <= 1 && cha < 0) e.preventDefault();
|
|
|
};
|
|
|
</script>
|
|
|
<style lang="scss">
|