javascript - JQuery - 可拖动 DIV 在浏览器窗口调整大小时超出位置

标签 javascript jquery html css jquery-ui

我有一个超大的 DIV 元素 ('#draggableIMG') 包含在父容器 ('#navScreen') 中。我使用 JQuery 来拖动图像。用户应该移动元素并且元素被限制在容器内。到目前为止,还不错:

Image full size

但是,当我手动更改浏览器窗口时,图像会移出右下角的位置,从而暴露它覆盖的图像。

Image broken code

下面是我的 JQuery 代码、CSS 代码和 HTML 代码。如何使子 DIV 在调整大小时保持在其父容器的范围内?

HTML

<div id="navScreen" class="navigation-screen">
    <div class="navigation-draggable-image" id="draggableIMG">
         <img src="{{imgSrc}}" alt="" class="responsive-image" />
    </div>
</div>

JQuery

 $(document).ready(function() {

    var parentPos = $('#navScreen').offset();
    var childPos = $('#draggableIMG').offset();
    var top = -(parentPos.top);
    var left = -(parentPos.left);

    $('#draggableIMG').css({ top: top + 'px', left: left + 'px', position: 'absolute', cursor: 'pointer'});

    $('#draggableIMG').draggable({
        drag: function(event, ui) {
            if (ui.position.top >= 0) {
                ui.position.top = 0;
            }
            if (ui.position.left > 0) {
                ui.position.left = 0;
            }
            if (ui.position.left < -(parentPos.left * 2)){
                ui.position.left = -(parentPos.left * 2);
            }
            if (ui.position.top < -(parentPos.top * 2)){
                ui.position.top = -(parentPos.top * 2);
            }
        },
        scroll: false
    });
  });

CSS

#draggableIMG {
    height:200%;
    width:200%;
}

#navScreen {
    height:100%;
    width:100%;
    position:relative;
    overflow:hidden;
}

最佳答案

你可以使用函数:

 $(window).resize(function(){
//you function to here
});

重新计算图像的新位置。

但是,操作此图像的最佳方式是 CSS。您可以使用“Background - Shorthand property”来定义一个 css,而无需 javascript 操作。

关于javascript - JQuery - 可拖动 DIV 在浏览器窗口调整大小时超出位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38337680/

相关文章:

javascript - 帮助 double 加法

javascript - 使用 webpack 和 jspm 以及外部依赖

javascript - 在 dataLoader amchart v3 中循环

jquery - TinyMCE 是否有拖放/粘贴图像插入(上传)插件或类似插件?

javascript - 如何让网站在重新加载页面后记住数字?

javascript - 在 Div 内选择输入的问题

javascript - 如何在使用溢出时不裁剪最后一个字母:hidden?

jquery - 将 span 标签附加到列表元素的更简单方法?

javascript - Backbone.js:无法绑定(bind)事件

javascript - 从 jQuery 同步运行 CSS 动画