效果图:

放大缩小和拖动是根据 movable-area 组件来实现的,小程序和uniapp都支持这个组件。

movable-area | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/miniprogram/dev/component/movable-area.html

实现思路:

默认显示默认大小的图片,点击图片执行yulan事件从而显示放大缩小的组件,全屏显示该图片,并且能放大缩小和拖动图片。

下面上一个 uniapp 在h5场景的使用实现代码:

注:其它场景也可以根据这个思路实现,例如微信小程序


			<movable-area v-if="preview" scale-area class="movable-area">
				<movable-view class="movable-view" direction="all" scale="true"
					scale-min="1" scale-max="4" :scale-value="scale" @dblclick="dblclick">
					<image style="width:100%;" class="" src="https://t8.baidu.com/it/u=96305556,1111032089&fm=218&app=137&size=f242,150&n=0&f=JPEG&fmt=auto?s=7BA38345CA621105781C74C90300C013&sec=1654707600&t=535dded2895f5349c5f6abdec4536f01" mode="widthFix"></image>
				</movable-view>
				<button @click="preview=false">返回直播</button>
			</movable-area>

<image @click="yulan"
 src="https://t8.baidu.com/it/u=96305556,1111032089&fm=218&app=137&size=f242,150&n=0&f=JPEG&fmt=auto?s=7BA38345CA621105781C74C90300C013&sec=1654707600&t=535dded2895f5349c5f6abdec4536f01" mode="widthFix"></image>

		data() {
			return {
				scale: 1,
				current: '',
				preview: false,
            }
        },
		methods: {
			// 预览图片
			yulan(current) {
				this.current = current;
				this.scale = 1;
				this.preview = true;
			},

            //双击事件放大缩小
			dblclick() {
				if (this.scale == 4) {
					this.scale = 1;
				} else {
					this.scale = 4;
				}
			},
        }

css

.movable-area {
		position: fixed;
		z-index: 99999;
		left: 0;
		top: 0;
		width: 100vw;
		height: 100vh;
		background-color: #d8d8d8;
	}

	.movable-view {
		width: 100vw;
		height: 90vh;
		justify-content: center; /*子元素水平居中*/
		align-items: center; /*子元素垂直居中*/
		display: -webkit-flex;
	}

	.swiperImg {
		height: 80%;
	}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐