diff --git a/packages/swipe/index.vue b/packages/swipe/index.vue index 46cafd090..f798a3a7a 100644 --- a/packages/swipe/index.vue +++ b/packages/swipe/index.vue @@ -203,20 +203,21 @@ export default create({ return; } - if (move) { + if (move && active + move >= -1 && active + move <= count) { if (active === -1) { swipes[count - 1].offset = 0; } swipes[0].offset = atLast && move > 0 ? trackSize : 0; this.active += move; - } else { - if (atFirst) { - swipes[count - 1].offset = delta > 0 ? -trackSize : 0; - } else if (atLast) { - swipes[0].offset = delta < 0 ? trackSize : 0; - } } + + if (atFirst) { + swipes[count - 1].offset = delta > 0 || move < 0 ? -trackSize : 0; + } else if (atLast) { + swipes[0].offset = delta < 0 || move > 0 ? trackSize : 0; + } + this.offset = offset - this.active * this.size; },