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

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

阅读更多
<!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>
分享到:
评论

相关推荐

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

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

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

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

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

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

    android双指缩放移动控件

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

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

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

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

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

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

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

    Silverlight 源码 图片缩放实例

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

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

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

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

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

    Image图片随着手指滑动缩放

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

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

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

    ios 双指捏合放大缩小图片

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

    微信小程序movable view移动图片和双指缩放实例代码

    movable-area是微信小程序的新组件,可以用来移动视图区域movable-view。移动方向可选择任何、垂直和平行。可移动区域里包含其他文本、图片、按钮等组件。可移动区域可绑定touchend等事件。movable-view的参数可调整...

    android 图片手势缩放

    2. **ScaleGestureDetector**: 这个类是专为识别和处理双指缩放手势而设计的。它的核心回调方法有`onScaleBegin()`, `onScale()` 和 `onScaleEnd()`。`onScaleBegin()` 在双指触碰屏幕开始时触发,`onScale()` 在...

    通过matrix缩放图片

    为了提供更好的用户体验,我们通常希望缩放过程是平滑的,而不是突然跳变。为此,可以使用`ViewCompat.animate()`方法配合`Animator`来创建动画效果,平滑地改变Matrix的缩放值。 5. **限制缩放范围** 为了避免...

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

    在Android开发中,实现图片的双指缩放和单指拖动是一项常见的需求,这涉及到对用户触摸事件的处理和视图的动态调整。在这个"控件以及双指放大缩小图片、单指拖动图片"的项目中,我们将探讨如何在Android应用中实现...

    js实现图片缩放与拖动

    此外,CSS3的`transform`属性也可以用来实现更高效且流畅的缩放效果,尤其是在支持硬件加速的浏览器中。 总之,通过JavaScript,我们可以创建出交互性强、用户体验良好的图片缩放和拖动功能。实现这一功能需要对DOM...

    图片缩放的View

    `ScaleGestureDetector`是Android SDK提供的一种工具类,专门用于处理双指捏合手势,从而实现图片的缩放功能。这个类使得开发者能够轻松地检测和响应用户的缩放手势,为应用程序添加了丰富的交互性。 `...

    手指旋转缩放物体(里面有代码和说明)

    我们可以监听这些事件,来判断是单指旋转还是双指缩放。 2. **旋转物体**:单指旋转物体通常涉及到两个步骤:计算旋转轴和计算旋转角度。我们可以获取触摸点的起始位置和当前位置,然后计算它们之间的弧度差,这...

Global site tag (gtag.js) - Google Analytics