我希望在jQuery中制作可拖拽的图像。首先,我对jQuery没有任何经验。话虽如此,让我描述一下我的目标。我有一个固定宽度/高度的div,其中包含的图像尺寸很大。因此,我希望图像可以在该div内拖动,以便用户可以看到整个图像。
有人能帮忙吗?请考虑我的jQuery熟练程度,并稍微详细说明过程。
有人能帮忙吗?请考虑我的jQuery熟练程度,并稍微详细说明过程。
$(function() {
$("#draggable").draggable();
});
.container {
margin-top: 50px;
cursor: move;
}
#screen {
overflow: hidden;
width: 200px;
height: 200px;
clear: both;
border: 1px solid black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<div class="container">
<div id="screen">
<img src="https://picsum.photos/200/200" class="drag-image" id="draggable" />
</div>
</div>
$(document).ready(function(){
$("#draggable").draggable();
});
IMG
)创建为可拖动对象。如果要将其移动范围限制在特定区域内,则可以查看其containment option。<img src="myimage.jpg" id="draggable" />
'.ready()'
是浏览器在页面加载完成后自动触发的方法。jQuery 组鼓励开发人员将所有 jQuery 代码放在此方法中,以确保在任何 jQuery 代码尝试操作它们之前,页面上的所有元素都已完全加载。为了限制这个例子的区域,containment 没有太多帮助。我已经实现了垂直滚动,但需要增强水平限制:
stop: function(event, ui) {
var helper = ui.helper, pos = ui.position;
var h = -(helper.outerHeight() - $(helper).parent().outerHeight());
if (pos.top >= 0) {
helper.animate({ top: 0 });
} else if (pos.top <= h) {
helper.animate({ top: h });
}
}
$('#dragMe').draggable({ containment: 'body' });
$('#dragMe').draggable({ containment: '#container' });
在PH.的答案基础上进行扩展,这将在图像被拖动到底层容器暴露出来的点时提供弹性反弹:
stop: function(event, ui) {
var helper = ui.helper, pos = ui.position;
var h = -(helper.outerHeight() - $(helper).parent().outerHeight());
var w = -(helper.outerWidth() - $(helper).parent().outerWidth());
if (pos.top <= h) {
helper.animate({ top: h });
} else if (pos.top > 0) {
helper.animate({ top: 0 });
}
if (pos.left <= w) {
helper.animate({ left: w });
} else if (pos.left > 0) {
helper.animate({ left: 0 });
}
}