移动端 图片手势控制 双指缩放 单指移动

Vue3 + HammerJS实战:5分钟搞定移动端图片预览组件(支持双指缩放/双击复位) 本文详细介绍了如何在Vue3项目中,通过集成HammerJS手势库快速构建一个功能完善的移动端图片预览组件。该方案支持双指缩放、单指拖动和双击复位等核心交互,并提供了从环境搭建、状态设计、手势绑定到边界控制与性能优化的完整实战指南,帮助开发者高效解决移动端H5开发中的常见痛点。 阅读详情

var pageX,pageY,position_top,position_left;
    function setGesture(el) {
        var obj = {}; //定义一个对象
        var istouch = false;
        var start = [];
        el.addEventListener("touchstart", function(e) {
            if (e.touches.length >= 2) { //判断是否有两个点在屏幕上
                istouch = true;
                start = e.touches; //得到第一组两个点
                obj.gesturestart && obj.gesturestart.call(el); //执行gesturestart方法
            }else if(e.touches.length == 1){
                istouch = true;
                var touch = e.touches[0]; //获取第一个触点
                pageX = Number(touch.pageX); //页面触点X坐标
                pageY = Number(touch.pageY); //页面触点Y坐标
                // 获取对象的top left值
                var _obj = $('body .tpsf')
               position_left = parseFloat(_obj.css('left').split('p')[0]);
               position_top = parseFloat(_obj.css('top').split('p')[0]);
            }
        }, false);
        document.addEventListener("touchmove", function(e) {
            e.preventDefault();
            if (e.touches.length >= 2 && istouch) {
                var now = e.touches; //得到第二组两个点
                var scale = getDistance(now[0], now[1]) / getDistance(start[0], start[1]); //得到缩放比例,getDistance是勾股定理的一个方法
                e.scale = scale.toFixed(2);
                obj.gesturemove && obj.gesturemove.call(el, e); //执行gesturemove方法
            }else if(e.touches.length == 1){
                var touch = e.touches[0]; //获取第一个触点
                var pageX2 = Number(touch.pageX); //页面触点X坐标
                var pageY2 = Number(touch.pageY); //页面触点Y坐标
                //控制图片移动
                $('body .tpsf').css({
                    'top': position_top + pageY2 - pageY + 'px',
                    "left": position_left + pageX2 - pageX + 'px'
                })
            }
        }, false);
        document.addEventListener("touchend", function(e) {
            if (istouch) {
                istouch = false;
                obj.gestureend && obj.gestureend.call(el); //执行gestureend方法
            };
        }, false);
        return obj;
    };

    function getDistance(p1, p2) {
        var x = p2.pageX - p1.pageX,
            y = p2.pageY - p1.pageY;
        return Math.sqrt((x * x) + (y * y));
    };

    function getAngle(p1, p2) {
        var x = p1.pageX - p2.pageX,
            y = p1.pageY - p2.pageY;
        return Math.atan2(y, x) * 180 / Math.PI;
    };
    var box = document.querySelector(".tpsf");
    var boxGesture = setGesture(box); //得到一个对象
    boxGesture.gesturestart = function() { //双指开始
        // box.style.backgroundColor = "yellow";
    };
    boxGesture.gesturemove = function(e) { //双指移动
        box.innerHTML = e.scale + "<br />" + e.rotation;
        
        box.style.transform = "scale(" + e.scale + ")"; //改变目标元素的大小和角度
    };
    boxGesture.gestureend = function() { //双指结束
        box.innerHTML = "";
    };
 

告别传统弹窗!用vue3-photo-preview打造移动端友好的图片浏览体验 本文介绍了如何利用vue3-photo-preview插件为移动端应用打造流畅的图片浏览体验。该插件原生支持双指缩放、滑动切换与关闭等手势操作,内置响应式适配与性能优化,能有效替代传统弹窗方案,显著提升用户交互体验与开发效率。 阅读详情

相关推荐

移动端图片手势交互Demo:手机上直接打开就能拖拽、缩放、旋转

这个资源包提供一个即开即用的H5图片手势操作示例,支持单指滑动平移、双指捏合缩放、三指旋转三种操作,所有功能在手机浏览器里点开2.html就能立刻体验。基于Hammer.js实现,但做了深度优化,解决了官方demo里常见的旋转抖动、手势复位异常、双点触控瞬间跳位等问题。缩放始终以图片中心为基准,旋转角度通过CSS transform矩阵计算,避免多次操作后的角度累积误差;拖拽时自动限制边界,防止图片移出可视区域。整个包只有style.css、2.html、hammer.min.js、1.png和assets

o9p0q1的博客 210

iOS用三个手势和仿射变换实现图片的旋转缩放移动效果(类iBooks教科书)

转载自 http://www.xiaoyaoli.com/?p=608 这个例子实现了双手指让图片旋转缩放移动的效果。 最关键的是松手后会根据现有缩放比例来判断在原有的变换基础上到达固定变换,比如缩放比例小于1.5时,无论松手时图片是在旋转状态还是有位移,都会根据现有的旋转角度和位移和缩放状态平滑的恢复到初始状态,大于1.5就放到的合适屏幕尺寸。 之所以要用到仿射变换,因为...

weixin_30911451的博客 248

js 双指缩放,双指放大,双击放大,移动端双指放大缩小

双指缩放,图片双指缩放,在图片上有固定的坐标,并且点击固定坐标有相对应的事件触发,demo

android 手势放缩_Android 手势

使用 Android 手势监测需要两个步骤:实现 GestureDetector.OnGestureListener 监听器实例以创建 GestureDetector 对象;为组件的 TouchEvent 事件绑定监听器,在事件处理中把组件上的 TouchEvent 事件交给 GestureDetector 处理,而 GestureDetector 就会检测是否触发了特定的手势动作。下面是测试不同...

weixin_42116734的博客 191

移动端图片浏览双指放大组件

这是一个移动端图片浏览双指放大组件,暂不支持双击缩放

hammer.js移动端图片手指缩放插件

手机移动端手指缩放图片的插件hammer.js

移动端适配以及双指缩放问题

移动端应用程序的显示都是占满整个视口的,所以我们可以直接使用vw和vh作为单位设置html的大小,(一般我还会给所有的盒子设置怪异盒模型)。我在做移动APP的时候,我还会做一点判断,判断使用者是谁(navigator.userargent),如果是浏览器就显示404,如果是移动设备就正常显示。 还有在移动端开发的过程中可能会遇到边框比正常的设置值宽的问题,这时可以将文档整体缩小为原来的一半(tranform.scale(.5))。具体没遇到过,移动端没用过边框。 禁止用户双指缩放,可以监听一下touchs

weixin_45259365的博客 618

移动端jquery效果显示地图双指缩放,单指拖动

可以在div图片上添加css动画效果,发光点,模拟地图的一些交汇方式,给大家介绍jQuery和js实现移动端双指缩放,希望对大家有所帮助。

移动端图片单指移动,双指放大缩小实现//touchmove的时候不让body滚动

移动端图片单指移动,双指放大缩小实现//touchmove的时候不让body滚动 思路1:移动放大缩小操作都直接放到图片上面 图片的放大缩小使用transform的scale属性操作,移动使用transform的translate属性操作,也可以使用matrix属性做2D转换,这个有六个值,14表示xy轴的放大倍数,56表示xy轴的偏移量,23表示度数,这里不操作旋转可以写成默认的0 根据touches获取当前触摸位置,touches是一个数组,表示当前有几个手指触摸屏幕,可以判断一下,是单指的时候在o

LiuXiaodong2020的博客 3517

JS实现移动端双指缩放和旋转方法

主要介绍了JS实现移动端双指缩放和旋转方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

VS2022离线环境下的NuGet包管理:从本地源到依赖项全解析

本文详细解析了在VS2022离线环境下如何高效管理NuGet包,包括搭建本地NuGet源的两种方案(本地文件夹源和私有NuGet服务器)、获取离线包的三大渠道以及依赖项处理的实战技巧。通过自动化脚本和依赖树分析工具,帮助开发者解决离线环境中的依赖项黑洞问题,提升开发效率。

5f4d3s2a1q的博客 1060

vue项目移动端双指缩放,滑动

vue 移动端双指缩放 滑动

MadSnail00的博客 6307

32位MIPS流水线CPU设计

32位MIPS流水线CPU设计(vivado)

m0_51320209的博客 3200

双指缩放canvas图片_移动端 图片手势控制 双指缩放 单指移动

var pageX,pageY,position_top,position_left;function setGesture(el) {var obj = {}; //定义一个对象var istouch = false;var start = [];el.addEventListener("touchstart", function(e) {if (e.touches.length >= 2...

weixin_39534978的博客 1352

数据基础设施建设任务中的技术名词解析

近日,国家数据局确定了18个数据基础设施建设任务(先行先试)承担地区,建设任务内容为:数场、数据空间、数据原件、隐私计算、数联网、区块链。这些概念都有什么样的内涵,他们的相互关系是怎样的?

五角大寨 5305

PC微信逆向:破解聊天记录文件!_读取别人pc微信msg文件

本文详细介绍了PC版微信数据库的解密方法,总结了前人经验并补充了关键细节。通过OllyDbg调试工具从微信内存中获取32字节加密密钥,使用C++结合OpenSSL库实现解密程序。重点解决了开发环境配置问题,包括Visual Studio项目设置和OpenSSL库的版本适配,将原本固定的数据库路径改为参数化输入,提高了工具的通用性。该方案为电子取证中的微信数据提取提供了完整的技术路径,避免了研究者重复探索已解决的问题。

zz96405784848的博客 9753

移动端 图片手势控制 双指缩放 单指移动

var pageX,pageY,position_top,position_left; function setGesture(el) { var obj = {}; //定义一个对象 var istouch = false; var start = []; el.addEventListener(&quot;touchstart&quot;, ...

fk129 3247

海康WEB3.3控件开发包 V3.3 前端vue项目调用实时监控画面

本需求的完成离不开后端将设备映射到公网, 以及前端单独部署demo页面这个思路的转变。

hero8011的博客 1万+

v-viewer 高级配置:自定义工具栏和交互体验完全指南

想要为你的Vue.js项目打造专业级的图片查看体验吗?v-viewer作为基于viewer.js的Vue图片查看器组件,提供了强大的图片浏览功能,包括旋转、缩放、平移等操作。本文将深入探讨v-viewer的高级配置技巧,帮助你完全掌控工具栏自定义和交互体验优化。 ## 🚀 v-viewer核心功能概览 v-viewer是一个专为Vue.js设计的图片查看器组件,它基于成熟的viewer.js

gitblog_09497的博客 545

SillyTavern角色卡制作全攻略:如何用AI还原你喜欢的虚构角色(附三叶完整角色卡JSON)

本文详细介绍了如何使用SillyTavern制作高质量AI角色卡,以《你的名字》中的宫水三叶为例,从角色特征提取、对话风格捕捉到JSON结构优化,全面解析AI角色扮演的创作技巧。通过具体的写作示例和完整角色卡JSON,帮助二次元爱好者和同人创作者实现虚构角色的精准还原与生动互动。

pandas7gardener的博客 2126

别让你的URDF模型在Gazebo里‘躺平’:手把手教你配置libgazebo_ros_diff_drive插件让两轮小车动起来

本文详细解析了如何在Gazebo中配置libgazebo_ros_diff_drive插件,使两轮小车模型实现动态仿真。从URDF模型到传动装置,再到差速驱动插件的精细调参,手把手教你解决机器人‘躺平’问题,提升ROS1与Gazebo仿真的实战能力。

weixin_42552716的博客 334

告别繁琐操作:Selenium移动端手势自动化完全指南

你是否还在为移动端测试中的滑动验证、图片缩放等手势操作烦恼?是否因无法精准模拟用户触摸行为导致测试用例频繁失败?本文将系统讲解如何使用Selenium实现触摸滑动、双指缩放等核心手势,帮你彻底解决移动端自动化测试中的手势难题。读完本文,你将掌握: - 单指滑动操作的3种实现方式及场景对比 - 双指缩放的核心算法与参数调试技巧 - 手势操作的稳定性优化方案 - 跨浏览器兼容性处理策略 ## 核心概...

gitblog_00228的博客 1146

【PCIe EP 设备入门学习专栏 -- 8 PCIe EP 架构详细介绍】

Synopsys PCIe 5.0 EP 架构由多个功能模块组成,整体遵循分层 + 模块化设计CXPL(事务层 + 链路层 + 物理层 MAC)XADM(仲裁/生成)、XAIM(应用接口)RADM(过滤/路由/Completion)CDM(配置空间)、PMC(电源管理)、LBC/DBI(寄存器访问)MSG_GEN(消息)、CXS(多芯片一致性)

CodingCos的博客 382

js实现移动端图片预览:手势缩放, 手势拖动,双击放大...

原文:js实现移动端图片预览:手势缩放, 手势拖动,双击放大... 前言本文将介绍如何通过js实现移动端图片预览,包括图片的 预览模式,手势缩放,手势拖动,双击放大等基本功能; 扫码查看示例效果: 代码地址http://pangyongsheng.github.io/imgPreview/ 一、功能介绍   图片...

weixin_33971205的博客 1330

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

如何掌握AppFlowy移动端手势操作:从入门到精通的实用指南

AppFlowy作为Notion的开源替代品,不仅让你完全掌控数据和定制化需求,其基于Flutter和Rust构建的跨平台架构,在移动端带来了流畅直观的手势交互体验。本文将系统介绍AppFlowy移动端的核心手势操作,帮助你高效管理文档和数据。 ## 基础手势操作全解析 ### 点击(Tap):最常用的交互方式 点击是移动设备上最基础也最频繁的操作,在AppFlowy中用于选择项目、打开菜单或

gitblog_00255的博客 996

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

《移动端测试:多手势操作兼容性》

当用户五指在屏幕上自由舞蹈时,是流畅自然的交响乐还是支离破碎的卡顿体验,取决于每个技术人对细节的苛刻追求。多手势兼容性测试绝非简单的功能验证,而是对移动操作系统底层事件机制的深度驯服。“每一毫米的触控延迟,都在消磨用户对产品的信任;每一次未被捕获的手势冲突,都可能成为压垮体验的最后一根稻草。通过数据驱动的自动化测试、毫秒级的性能监控、严苛的覆盖矩阵,我们终将在方寸屏幕间,构建无感却无处不在的交互魔法。

fengruxue的专栏 881

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: 移动端双指缩放事件(原生),e.originalEvent.touches
下一篇: 手机端图片点击预览,双指放大,完整demo,引入hammer.js
beichen3997
博客等级 码龄9年 96粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值