diff --git a/packages/image-preview/ImagePreview.vue b/packages/image-preview/ImagePreview.vue index 6b03c6318..6c244b779 100644 --- a/packages/image-preview/ImagePreview.vue +++ b/packages/image-preview/ImagePreview.vue @@ -1,41 +1,43 @@ <template> - <div - v-if="value" - :class="b()" - @touchstart="onWrapperTouchStart" - @touchend="onWrapperTouchEnd" - @touchcancel="onWrapperTouchEnd" - > + <transition name="van-fade"> <div - v-if="showIndex" - :class="b('index')" + v-if="value" + :class="b()" + @touchstart="onWrapperTouchStart" + @touchend="onWrapperTouchEnd" + @touchcancel="onWrapperTouchEnd" > - {{ active + 1 }}/{{ count }} - </div> - <swipe - ref="swipe" - :loop="loop" - indicator-color="white" - :initial-swipe="startPosition" - :show-indicators="showIndicators" - @change="onChange" - > - <swipe-item - v-for="(item, index) in images" - :key="index" + <div + v-if="showIndex" + :class="b('index')" > - <img - :class="b('image')" - :src="item" - :style="index === active ? imageStyle : null" - @touchstart="onTouchStart" - @touchmove="onTouchMove" - @touchend="onTouchEnd" - @touchcancel="onTouchEnd" + {{ active + 1 }}/{{ count }} + </div> + <swipe + ref="swipe" + :loop="loop" + indicator-color="white" + :initial-swipe="startPosition" + :show-indicators="showIndicators" + @change="onChange" + > + <swipe-item + v-for="(item, index) in images" + :key="index" > - </swipe-item> - </swipe> - </div> + <img + :class="b('image')" + :src="item" + :style="index === active ? imageStyle : null" + @touchstart="onTouchStart" + @touchmove="onTouchMove" + @touchend="onTouchEnd" + @touchcancel="onTouchEnd" + > + </swipe-item> + </swipe> + </div> + </transition> </template> <script> @@ -176,7 +178,7 @@ export default create({ onTouchStart(event) { const { touches } = event; - const { offsetX } = this.$refs.swipe; + const { offsetX = 0 } = this.$refs.swipe || {}; if (touches.length === 1 && this.scale !== 1) { this.startMove(event); diff --git a/packages/image-preview/test/__snapshots__/index.spec.js.snap b/packages/image-preview/test/__snapshots__/index.spec.js.snap index 4069ba5a5..a94662117 100644 --- a/packages/image-preview/test/__snapshots__/index.spec.js.snap +++ b/packages/image-preview/test/__snapshots__/index.spec.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`render image 1`] = ` -<div class="van-image-preview"> +<div class="van-image-preview" name="van-fade"> <div class="van-image-preview__index"> 1/3 </div> @@ -23,7 +23,7 @@ exports[`render image 1`] = ` `; exports[`zoom 1`] = ` -<div class="van-image-preview"> +<div class="van-image-preview" name="van-fade"> <div class="van-image-preview__index"> 1/3 </div> diff --git a/packages/image-preview/test/index.spec.js b/packages/image-preview/test/index.spec.js index a37a215ed..85873e4a8 100644 --- a/packages/image-preview/test/index.spec.js +++ b/packages/image-preview/test/index.spec.js @@ -1,7 +1,9 @@ import Vue from 'vue'; import ImagePreview from '..'; import ImagePreviewVue from '../ImagePreview'; -import { mount, trigger, triggerDrag } from '../../../test/utils'; +import { mount, trigger, triggerDrag, transitionStub } from '../../../test/utils'; + +transitionStub(); function triggerZoom(el, x, y) { trigger(el, 'touchstart', 0, 0, { x, y });