jquery - jQuery 可拖动全屏图像
问题描述
我正在使用 jQuery Draggable,图像大于屏幕(3000x3000)。
为了防止图像被拖出屏幕,我正在查看图像位置
#screen {
cursor: grab;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
<div id="screen">
<img src="images/big-image.jpg" class="drag-image" id="draggable" />
</div>
$("#draggable").draggable({
drag: function (event, ui) {
if (ui.position.top > 1032) {
ui.position.top = 1032;
} else if (ui.position.top < -1030) {
ui.position.top = -1030;
}
if (ui.position.left > 540) {
ui.position.left = 540;
} else if (ui.position.left < -540) {
ui.position.left = -540;
}
}
});
如何防止图像被拖出屏幕而无需对位置值进行硬编码?
解决方案
在这篇文章的帮助下,元素相对于视口的 jQuery 偏移量我通过获取图像偏移量然后使用它们来防止图像拖出屏幕来解决这个问题:
var offset = $('#screen img').offset();
var xPos = offset.left - $(document).scrollLeft()
var yPos = offset.top - $(document).scrollTop()
$("#draggable").draggable({
drag: function (event, ui) {
if (ui.position.top > Math.abs(yPos)) {
ui.position.top = Math.abs(yPos);
} else if (ui.position.top < yPos) {
ui.position.top = yPos;
}
if (ui.position.left > Math.abs(xPos)) {
ui.position.left = Math.abs(xPos);
} else if (ui.position.left < xPos) {
ui.position.left = xPos;
}
}
});
推荐阅读
- substrate - 从链下工作人员的上下文之外访问链下工作人员的本地存储
- python - 为什么 print('a' and 'b') 在 python 中返回 'b'?
- javascript - 在php中使用ajax获取数据时无法读取null的属性子注释
- variables - 将命令的输出存储在 ansible 中的变量中
- prolog - Prolog中用于删除的列表操作
- python - python selenium代码将文本保存在剪贴板中的变量中,通过单击元素复制到剪贴板
- javascript - 登录后如何使用授权标头重定向到新页面?
- python - 如何在字典中包含类中的实例列表?
- r - 有没有办法在创建线段的随机模式时指定线段交叉的数量?
- vue.js - 我如何模拟这个 Vue 注入?