`
huruqing
  • 浏览: 4157 次
社区版块
存档分类
最新评论

双指缩放实例(同事写的,不是转载也不是原创)

阅读更多
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <meta content="width=device-width initial-scale=1.0 maximum-scale=1.0 user-scalable=0" name="viewport"/>
    <title>手指</title>
    <style>
        .bg-model{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.5);}
        .rect{position:absolute;width:60px;height:60px;border:1px dashed #f00}
        .resize{position:absolute;width: 30px;height: 30px;bottom: -15px;right: -15px;background: rgb(163, 146, 54)
        }
    </style>
</head>
<body>
<div class="bg-model" id="div1">
    <div class="rect" id="div2" style="top:10px;left:10px;width: 60px;">
        <p id="DebugTXT"></p>
        <div class="resize" id="div3"></div>
    </div>
</div>
<script>
    var d1=document.getElementById('div1'),d2=document.getElementById('div2') ,d3=document.getElementById('div3');
    var Moving,Resizing;
    var startX,startY,sideLen=60;
    d1.addEventListener('touchstart',touchStart,true);
    d1.addEventListener('touchmove',touchMove,true);
    d1.addEventListener('touchend',touchEnd,true);

    var twoFinger;
    var pos1={x:0,y:0},pos2={x:0,y:0};
    var pos12={x:0,y:0},pos22={x:0,y:0};
    function touchStart(e){
        var el = e.target;
        DebugTXT.innerHTML='touch:'+e.touches.length+'<br>changeTouch:'+e.changedTouches.length+'<br>'+twoFinger;
        if(e.touches.length==2){
            twoFinger=true;
            pos1.x=e.touches[0].clientX; pos1.y=e.touches[0].clientY;
            pos2.x=e.touches[1].clientX; pos2.y=e.touches[1].clientY;
            return;
        }else{twoFinger=false;}

        var touch= e.touches[0];
        if (el.id == 'div2') {
            Moving = true;
            Resizing = false;
            startX=touch.clientX-parseInt(d2.style.left);
            startY=touch.clientY-parseInt(d2.style.top);
        } else if (el.id == 'div3') {
            Moving = false;
            Resizing = true;      sideLen=parseInt(d2.style.width);
            startX=touch.clientX;
            startY=touch.clientY;
            d3.style.display='none';
        }twoFinger=false;
    }
    function touchMove(e){
        DebugTXT.innerHTML='touch:'+e.touches.length+'<br>changeTouch:'+e.changedTouches.length+'<br>'+twoFinger;
        e.stopPropagation();
        e.preventDefault();
        if (e.changedTouches.length == 2) {
            twoFinger = true;
            pos12.x = e.changedTouches[0].clientX;
            pos12.y = e.changedTouches[0].clientY;
            pos22.x = e.changedTouches[1].clientX;
            pos22.y = e.changedTouches[1].clientY;
            return;
        }
        var touch = e.changedTouches[0];
        if (Moving) {
            var endX = touch.clientX, endY = touch.clientY;
            d2.style.left = endX - startX + 'px';
            d2.style.top = endY - startY + 'px';
        } else if (Resizing) {
            var endX = touch.clientX, endY = touch.clientY;
            var increase = Math.min(endX - startX, endY - startY);
            d2.style.width = sideLen + increase + 'px';
            d2.style.height = sideLen + increase + 'px';
        }
    }

    function touchEnd(e){
        DebugTXT.innerHTML='touch:'+e.touches.length+'<br>changeTouch:'+e.changedTouches.length+'<br>'+twoFinger;
        if(e.touches.length==0&&twoFinger){
            twoFinger=false;
            var len1=Math.pow(Math.pow(pos1.x-pos2.x,2)+Math.pow(pos1.y-pos2.y,2),0.5).toFixed(0);
            var len2=Math.pow(Math.pow(pos12.x-pos22.x,2)+Math.pow(pos12.y-pos22.y,2),0.5).toFixed(0);
            //alert('len1:'+len1+',len2:'+len2);
            var newL=len2-len1>0?1.5:0.5;
            sideLen=parseInt(d2.style.width);
            d2.style.width =d2.style.height =sideLen*newL+ 'px';

        }
        Moving=Resizing=false;      d3.style.display='block';
    }

</script>
</body>
</html>
分享到:
评论

相关推荐

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

    本篇文章将通过实例代码详细介绍如何用JS实现移动端双指缩放和旋转,以及如何对网页进行缩放。 首先,我们需要了解移动端触摸事件。在移动端设备上,JS通过监听特定的触摸事件来捕捉用户的触摸行为。这些事件包括...

    Android 图片双指缩放 单指拖拽 、拖到边界回弹

    在Android开发中,实现图片的双指缩放和单指拖拽是常见的需求,尤其在设计用户界面或者创建自定义视图时。这种功能能够提供更丰富的交互体验,让用户能够自由地查看和操作图片。本篇文章将深入探讨如何在Android应用...

    双指缩放图片,双击放大缩小图片DEMO

    本DEMO主要展示了如何利用双指缩放和双击操作来实现图片的放大与缩小,提供了一个直观且易用的交互体验。以下将详细解释这个DEMO涉及的技术点。 首先,我们要理解双指缩放(Pinch Zoom)的概念。双指缩放是基于多点...

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

    "移动端jquery效果显示地图双指缩放,单指拖动"这个主题主要探讨了如何使用jQuery和JavaScript技术在移动设备上实现类似地图应用的交互功能,即双指缩放(pinch-to-zoom)和单指拖动(drag-to-move)。下面将详细...

    android双指缩放移动控件

    在Android开发中,实现双指缩放和移动控件是一项常见的需求,特别是在设计触摸交互的界面时。这一功能主要用于图片查看器、地图应用或者任何需要用户进行手势操作的场景。以下将详细介绍如何在Android中实现这个功能...

    Android项目控件以及双指放大缩小图片、单指拖动图片.rar

    这个压缩包“Android项目控件以及双指放大缩小图片、单指拖动图片.rar”提供了一个示例,展示了如何在Android应用中实现双指缩放和单指拖动图片的功能。这个功能在很多场景下都非常实用,比如在地图应用、图像查看器...

    Android代码-双指缩放图片和摇一摇

    在Android开发中,实现双指缩放图片和摇一摇功能是常见的交互需求,这两个特性大大提升了用户体验。本文将详细讲解如何在Android应用中实现这些功能。 首先,我们来看双指缩放图片的功能。这个功能主要涉及到...

    Silverlight 源码 图片缩放实例

    在本文中,我们将深入探讨Silverlight技术,特别是关于图片缩放的实现实例。Silverlight是Microsoft推出的一个跨浏览器插件,用于创建丰富的交互式Web应用程序,具有强大的图形处理能力和多媒体支持。图片缩放功能在...

    html移动开发手势缩放(纯干货)(基于hammer velocity)

    然后在JavaScript中初始化Hammer实例,并监听`pinch`和`pinchend`事件: ```javascript var scalableDiv = document.getElementById('scalable'); var hammertime = new Hammer(scalableDiv); hammertime.on('...

    android 两点触摸 两个手指放大缩小图片

    Android SDK提供了一个名为ScaleGestureDetector的工具类,它可以帮助我们更方便地检测双指缩放手势。我们可以创建一个ScaleGestureDetector的实例,并提供一个OnScaleGestureListener。在监听器的onScale()方法中,...

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

    在本案例中,我们主要关注的是图片手指缩放功能,这在手机移动端的网页浏览或图像查看中非常常见。 1. **Hammer.js 插件安装与引入**: 在项目中使用 Hammer.js,首先需要将其下载或通过 CDN 引入。在本压缩包中,...

    安卓手势放大缩小相机

    除了双指捏合,滑动手势也可以用于平移或连续变焦。用户可以沿着水平或垂直方向滑动手指来实现视角的平移,或者通过持续的滑动来连续调整缩放级别。这需要在`ACTION_MOVE`事件中处理,并根据手指移动的距离动态更新...

    Android 监听百度地图缩放事件

    ### Android监听百度地图缩放事件知识点详解 #### 一、概述 在开发基于地理位置的应用时,经常需要使用地图服务来展示位置信息或者提供路径规划等功能。百度地图作为一款功能强大的地图服务工具,在Android开发中...

    Image图片随着手指滑动缩放

    在移动应用开发中,尤其是涉及用户交互的场景,如照片浏览、地图导航等,实现图片随着手指滑动而缩放的功能是一项基本需求。这个功能基于触摸屏幕的手势识别技术,通常利用多点触控(Multi-Touch)来实现图片的平移...

    JS前端HTML5图片预览手势缩放

    极简调用: &lt;script src="main/js/photoswipe.init.js"&gt;&lt;/script&gt; (this)'/&gt; ()'&gt;多图预览&lt;/button&gt; function photoPreview(items) { var items = [{ src: "1.jpg", ...&lt;/body&gt;

    Android多点触控技术实战,对图片进行缩放和移动Demo

    - 创建ScaleGestureDetector对象,重写onScale()、onScaleBegin()和onScaleEnd()回调方法,用于识别和处理双指缩放。 2. **处理多点触控事件**: - 在onTouchEvent()方法中,首先调用GestureDetector的...

    ios 双指捏合放大缩小图片

    在iOS开发中,实现双指捏合操作来放大或缩小图片是一种常见的手势识别功能,它极大地提升了用户体验。这种手势主要用于图像查看器应用,让用户能够自由地查看图片的细节或者整体布局。本文将深入探讨如何在iOS中实现...

    Android 手势检测实战 打造支持缩放的图片预览效果

    我们将主要关注`ScaleGestureDetector`类,它是Android SDK提供的一种专门用于识别双指缩放手势的工具。 `ScaleGestureDetector`是Android SDK中的一个内置类,它可以帮助我们检测到用户在屏幕上进行的双指捏合和...

Global site tag (gtag.js) - Google Analytics