我正在使用jQuery panzoom缩放图像和一些div元素。这通常可以工作,但是位于图像顶部的元素不会停留在其原始位置。无论如何,在缩放时将div元素保持在原位置?

JSFiddle:https://jsfiddle.net/828wu2dy/

HTML:

<section id="inverted-contain">
    <div class="panzoom-elements">
        <div class="item item1">ITEM 1</div>
        <div class="item item2">ITEM 2</div>
        <div class="panzoom">
            <img src="http://www.hdwallpapers.in/walls/enchanted_forest-wide.jpg">
        </div>
    </div>

    <div class="buttons">
        <button class="zoom-in">Zoom In</button>
        <button class="zoom-out">Zoom Out</button>
        <input type="range" class="zoom-range">
        <button class="reset">Reset</button>
    </div>
</section>


JS:

(function() {
    var $section = $('#inverted-contain');
    $section.find('.panzoom').panzoom({
        $zoomIn: $section.find(".zoom-in"),
        $zoomOut: $section.find(".zoom-out"),
        $zoomRange: $section.find(".zoom-range"),
        $reset: $section.find(".reset"),
        $set: $section.find('.panzoom-elements > div'),
        startTransform: 'scale(0)',
        increment: 0.1,
        minScale: 1,
        maxScale: 2,
        contain: 'invert'
    }).panzoom('zoom');
})();


CSS:

.panzoom-elements {
    width: 50%;
    height: 400px;
}

.item {
    position: absolute;
    z-index: 10;
}

.item.item1 {
    color: white;
    background: black;
    width:50px;
    height:50px;
    top: 300px;
    left: 100px;
}

.item.item2 {
    color: white;
    background: black;
    width:50px;
    height:50px;
    top: 200px;
    left: 150px;
}


另一个问题是它也不会水平拖动。

我已经尝试了所有我能想到的。

最佳答案

第1部分:

要解决“项目”问题-尝试将“项目”元素与“ img”放在一个级别上-我的意思是将它们放入div class ='panzoom'中。

为我工作。 ^^

<section id="inverted-contain">
    <div class="panzoom-elements">
        <div class="panzoom">
            <div class="item item1">ITEM 1</div>
            <div class="item item2">ITEM 2</div>
            <img src="http://www.hdwallpapers.in/walls/enchanted_forest-wide.jpg">
        </div>
    </div>

    <div class="buttons">
        <button class="zoom-in">Zoom In</button>
        <button class="zoom-out">Zoom Out</button>
        <input type="range" class="zoom-range">
        <button class="reset">Reset</button>
    </div>
</section>


这种思想方法导致了我这个答案:在学习API的panzoom文档并检查您的小提琴时,我发现'img'或任何可以看作是它的直接选择器的东西(我的意思是像$('。panzoom' ).child()。first()在您的脚本中未提及。这意味着img可能不是自己进行放大/缩小的。接下来我想到的-似乎是父级正在改变。这意味着您需要将您的物品放在变化的空间内-这是处理该问题的最合乎逻辑的方式...我试图测试该想法-并且它起作用了。



第2部分:


  另一个问题是它也不会水平拖动。


将此添加到您的CSS

.panzoom{ width: 1920px;}


这是图像的尺寸。为我工作。
也许您还可以增加.panzoom图像的高度。在水平图像中,这不是必需的,但是在垂直图像中可能会很重要。

07-26 03:40