我用一个隐藏了溢出的 div 来掩盖一个图像。我试图通过将容器设置为所有内容所在的更大 div 来限制图像可以拖动的数量。我在让容器 div 根据一半图像向上和左重新定位时遇到问题宽度/高度。目标是让用户能够将图像拖动到任何位置,而不能将其拖动到图像边缘之外。
这是一个 jsfiddle:http: //jsfiddle.net/richcoy/uEBDW/20/
HTML
<div id="container">
<div id="window">
<img src="http://alumniconnections.com/olc/filelib/COU/cpages/48/Library/chicago_skyline.jpg" class="drag img" alt="chicago" width="300" height="300" />
</div>
</div>
CSS
body {
background: white;
margin: 30px;
}
#container {
width: 400px;
height: 400px;
position: relative;
}
#window {
width: 200px;
height: 200px;
border: 1px solid #6D6D6D;
overflow: hidden;
cursor: move;
position: absolute;
/* Stop blue overlay on photo */
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
jQuery
$().ready(function() {
$(".drag").draggable({
containment: "#container"
});
$('.img').each(function() {
var imageWidth = $(this).width();
var imageHeight = $(this).height();
alert('Width: ' + $(this).width() + '\nHeight: ' + $(this).height()); // For testing purposes only
var positionTop = -(imageHeight / 2);
var positionLeft = -(imageWidth / 2);
alert('Top: ' + positionTop + '\nLeft: ' + positionLeft); // For testing purposes only
});
$('#container').css({
'top': positionTop + 'px',
'left': positionLeft + 'px'
});
});