jquery - 触摸缩放不适用于 jQuery Panzoom

标签 jquery jquery.panzoom

我已将 jQuery Panzoom 添加到我的项目中。我正在全屏显示图像,并且希望用户能够在 iOS 设备上放大该图片。平移有效,但缩放无效,我不知道为什么。当启用设备模拟时,它也无法在 Chrome 调试监视器中工作。

即使有了演示,捏缩放似乎也不起作用。是插件坏了,还是我傻?

https://github.com/timmywil/panzoom

我正在动态创建包含图像的 div。

zoomThumb: function (d, e) {
    let $imgPopup = $('<div>').addClass('fullScreenImage').appendTo($('body')).fadeIn();
    let $panzoom = $('<img>').attr('src', d.src.replace('Thumb/', '')).appendTo($imgPopup);
    $panzoom.panzoom({ disableZoom: false});

    // Mouse wheel zoom
    $imgPopup.on('mousewheel.focal', function (e) {
        e.preventDefault();
        var delta = e.delta || e.originalEvent.wheelDelta;
        var zoomOut = delta ? delta < 0 : e.originalEvent.deltaY > 0;
        $panzoom.panzoom('zoom', zoomOut, {
            animate: false,
            focal: e
        });
    });

    // Close button
    $('<div>').append($('<i>').addClass('fa').addClass('fa-times')).appendTo($imgPopup).click(function () {
        $imgPopup.fadeOut({ done: () => { $imgPopup.remove(); } });
    });

    e.stopPropagation();
}
<小时/>
.fullScreenImage {
    position: fixed;
    z-index: 1;
    padding-top: 100px;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgb(0,0,0);
    background-color: rgba(0,0,0,0.8);
    display: none;
}

    .fullScreenImage > img {
        margin: auto;
        display: block;
        width: 80%;
    }

    .fullScreenImage > div {
        position: absolute;
        top: 15px;
        right: 35px;
        color: #f1f1f1;
        font-size: 40px;
        font-weight: bold;
        transition: 0.3s;
    }

        .fullScreenImage > div:hover,
        .fullScreenImage > div:focus {
            color: #bbb;
            text-decoration: none;
            cursor: pointer;
        }

你知道如何解决这个问题吗?

最佳答案

在我的项目中,我需要禁用平移事件,而捏合和鼠标滚轮事件不起作用。但如果您查看此示例,您可以独立启用它。

https://timmywil.com/panzoom/demo/


const panzoom = Panzoom(elem)
const parent = elem.parentElement
// No function bind needed
parent.addEventListener('wheel', panzoom.zoomWithWheel)

// This demo binds to shift + wheel
parent.addEventListener('wheel', function(event) {
  if (!event.shiftKey) return
  panzoom.zoomWithWheel(event)
})

对我来说这个方法很有效。 希望对您有所帮助。

关于jquery - 触摸缩放不适用于 jQuery Panzoom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54183787/

相关文章:

javascript - 如果用户滚动,则出现在中间的 Div 会中断

javascript - jquery panzoom 点击

javascript - PHP AJAX - &lt;input&gt; 元素可以像 <form> 一样具有 "action"吗?

jquery - Handsontable 可以免费使用吗?

javascript - 如何在 jQuery 中动态创建混合 HTML 内容

jquery - Angular 4 缩放

javascript - jQuery Panzoom 包含 : 'invert' inside a container with a fixed width

jquery panzoom插件默认缩放?

javascript - 将 jquery panzoom 与 jquery draggable 一起使用

javascript - 样式化 jQuery 移动复选框