diff --git a/packages/vant/src/image-preview/ImagePreview.tsx b/packages/vant/src/image-preview/ImagePreview.tsx index b8d525fe3..0220cd0ed 100644 --- a/packages/vant/src/image-preview/ImagePreview.tsx +++ b/packages/vant/src/image-preview/ImagePreview.tsx @@ -44,10 +44,10 @@ const [name, bem] = createNamespace('image-preview'); const popupProps = [ 'show', + 'teleport', 'transition', 'overlayStyle', 'closeOnPopstate', - 'teleport' ] as const; export const imagePreviewProps = { @@ -89,6 +89,7 @@ export default defineComponent({ active: 0, rootWidth: 0, rootHeight: 0, + disableZoom: false, }); const resize = () => { @@ -137,6 +138,14 @@ export default defineComponent({ } }; + const onDragStart = () => { + state.disableZoom = true; + }; + + const onDragEnd = () => { + state.disableZoom = false; + }; + const renderImages = () => ( {props.images.map((image, index) => ( emit('longPress', { index })} - v-slots={{ - image: slots.image, - }} /> ))} diff --git a/packages/vant/src/image-preview/ImagePreviewItem.tsx b/packages/vant/src/image-preview/ImagePreviewItem.tsx index e9680868b..521fb0b7b 100644 --- a/packages/vant/src/image-preview/ImagePreviewItem.tsx +++ b/packages/vant/src/image-preview/ImagePreviewItem.tsx @@ -44,6 +44,7 @@ export default defineComponent({ maxZoom: makeRequiredProp(numericProp), rootWidth: makeRequiredProp(Number), rootHeight: makeRequiredProp(Number), + disableZoom: Boolean, }, emits: ['scale', 'close', 'longPress'], @@ -146,11 +147,16 @@ export default defineComponent({ const onTouchStart = (event: TouchEvent) => { const { touches } = event; + fingerNum = touches.length; + + if (fingerNum === 2 && props.disableZoom) { + return; + } + const { offsetX } = touch; touch.start(event); - fingerNum = touches.length; startMoveX = state.moveX; startMoveY = state.moveY; touchStartTime = Date.now();