首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

touch.js图片缩放实例

touch.js 是一个用于处理移动设备上触摸事件的 JavaScript 库。它可以帮助开发者实现图片缩放等交互效果。以下是一个使用 touch.js 实现图片缩放的基本实例:

HTML 结构

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片缩放示例</title>
    <style>
        #image-container {
            width: 100%;
            height: auto;
            overflow: hidden;
        }
        #image-container img {
            width: 100%;
            transition: transform 0.2s;
        }
    </style>
</head>
<body>
    <div id="image-container">
        <img id="zoom-image" src="your-image-source.jpg" alt="Zoomable Image">
    </div>

    <!-- 引入 touch.js 库 -->
    <script src="path/to/touch.js"></script>
    <script src="path/to/your-script.js"></script>
</body>
</html>

JavaScript 代码(your-script.js)

代码语言:txt
复制
document.addEventListener('DOMContentLoaded', function() {
    var imageContainer = document.getElementById('image-container');
    var zoomImage = document.getElementById('zoom-image');

    var touchStartDistance = null;
    var initialScale = 1;

    imageContainer.addEventListener('touchstart', function(event) {
        if (event.touches.length === 2) {
            touchStartDistance = Math.hypot(
                event.touches[0].pageX - event.touches[1].pageX,
                event.touches[0].pageY - event.touches[1].pageY
            );
            initialScale = parseFloat(zoomImage.style.transform.replace(/[^0-9.]/g, '')) || 1;
        }
    }, false);

    imageContainer.addEventListener('touchmove', function(event) {
        if (event.touches.length === 2) {
            event.preventDefault(); // 阻止默认的双指缩放行为

            var currentDistance = Math.hypot(
                event.touches[0].pageX - event.touches[1].pageX,
                event.touches[0].pageY - event.touches[1].pageY
            );

            var scale = initialScale * (currentDistance / touchStartDistance);
            scale = Math.max(1, Math.min(scale, 5)); // 限制缩放范围

            zoomImage.style.transform = 'scale(' + scale + ')';
        }
    }, false);

    imageContainer.addEventListener('touchend', function(event) {
        if (event.touches.length < 2) {
            touchStartDistance = null;
        }
    }, false);
});

说明

  1. HTML 结构:创建一个包含图片的容器,并设置相应的样式。
  2. JavaScript 代码
  • 监听 touchstart 事件,当检测到两个触摸点时,记录初始的两指之间的距离,并获取图片的初始缩放比例。
  • 监听 touchmove 事件,当检测到两个触摸点时,计算当前两指之间的距离,并根据距离变化来计算新的缩放比例。然后,将新的缩放比例应用到图片上。
  • 监听 touchend 事件,当触摸点数量少于两个时,重置初始距离。
  1. 限制缩放范围:在 touchmove 事件处理程序中,通过 Math.max()Math.min() 函数限制缩放比例的范围,防止图片过度放大或缩小。

这个实例展示了如何使用 touch.js(或类似的触摸事件处理逻辑)来实现图片的缩放功能。你可以根据自己的需求调整代码,例如添加平滑的过渡效果、限制缩放的中心点等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的文章

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券