Vue 3实现的移动端两指控制图片缩放功能

本文主要是介绍Vue 3实现的移动端两指控制图片缩放功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用Vue 3的Composition API来实现的图片缩放功能。这是一个使用touch事件来实现的简单双指缩放图片的功能。

  1. 模板部分(Template)

    • <div>:这是一个相对定位的容器,同时设置overflow: hidden;以防止图片超出范围。这个元素监听了touchstarttouchmovetouchend事件。
    • <img>:这是要显示的图片,通过:style绑定动态的宽度。这个元素的引用被存储在image变量中,以便在脚本部分进行操作。
  2. 脚本部分(Script)

    • const image = ref(null);:创建一个引用(ref),用于存储图片元素的引用。
    • let initialDistance = 0;:初始化两个触摸点的初始距离。
    • let baseWidth = 100;:图片的初始宽度。
    • const imageWidth = ref(baseWidth);:创建一个引用,存储图片的宽度。
    • const onTouchStart = (event) => {...}:当双指触摸开始时,记录当前两个触摸点的距离。
    • const onTouchMove = (event) => {...}:当双指触摸移动时,计算当前两个触摸点的距离并与初始距离比较,根据比较结果调整图片的宽度。
    • const onTouchEnd = () => {...}:当双指触摸结束时,重置初始距离。

此代码示例在用户使用双指在屏幕上滑动时,会根据滑动的方向来放大或缩小图片的尺寸。其中,每次调整的幅度是10px,这个值可以根据实际需求进行调整。

<template><div style="position: relative; overflow: hidden;"@touchstart="onTouchStart"@touchmove="onTouchMove"@touchend="onTouchEnd"><img ref="image" src="path_to_your_image.jpg" alt="My Image" :style="{ width: imageWidth + 'px' }"/></div>
</template><script setup>
import { ref } from 'vue';const image = ref(null);
let initialDistance = 0;
let baseWidth = 100; // 初始宽度
const imageWidth = ref(baseWidth);const onTouchStart = (event) => {if (event.touches.length === 2) {initialDistance = Math.hypot(event.touches[0].pageX - event.touches[1].pageX,event.touches[0].pageY - event.touches[1].pageY);}
};const onTouchMove = (event) => {if (event.touches.length === 2) {const currentDistance = Math.hypot(event.touches[0].pageX - event.touches[1].pageX,event.touches[0].pageY - event.touches[1].pageY);if (currentDistance > initialDistance) {// 放大图片imageWidth.value += 10;} else if (currentDistance < initialDistance) {// 缩小图片,可添加边界条件判断防止过小imageWidth.value -= 10;}initialDistance = currentDistance;}
};const onTouchEnd = () => {initialDistance = 0;
};
</script>

这篇关于Vue 3实现的移动端两指控制图片缩放功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/485303

相关文章

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

前端CSS Grid 布局示例详解

《前端CSSGrid布局示例详解》CSSGrid是一种二维布局系统,可以同时控制行和列,相比Flex(一维布局),更适合用在整体页面布局或复杂模块结构中,:本文主要介绍前端CSSGri... 目录css Grid 布局详解(通俗易懂版)一、概述二、基础概念三、创建 Grid 容器四、定义网格行和列五、设置行

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

前端下载文件时如何后端返回的文件流一些常见方法

《前端下载文件时如何后端返回的文件流一些常见方法》:本文主要介绍前端下载文件时如何后端返回的文件流一些常见方法,包括使用Blob和URL.createObjectURL创建下载链接,以及处理带有C... 目录1. 使用 Blob 和 URL.createObjectURL 创建下载链接例子:使用 Blob

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Vuex Actions多参数传递的解决方案

《VuexActions多参数传递的解决方案》在Vuex中,actions的设计默认只支持单个参数传递,这有时会限制我们的使用场景,下面我将详细介绍几种处理多参数传递的解决方案,从基础到高级,... 目录一、对象封装法(推荐)二、参数解构法三、柯里化函数法四、Payload 工厂函数五、TypeScript

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(