【发布时间】:2011-01-28 15:44:37
【问题描述】:
我有一个 ASP.Net 页面,其中包含一个 <div> 和一个 <img> 标记。图片很大,所以<div> 的大小设置为 500x500 像素,溢出设置为滚动。
我正在尝试通过单击并拖动图像来添加图像平移。但是,每次我开始拖动时,图像都会脱离元素的边界并占用整个页面。
下面是说明问题的示例代码:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="divInnerDiv" style="overflow:scroll; width:500px; height:500px; cursor:move;">
<img id="imgTheImage" src="Page0001.jpg" border="0" />
</div>
<script type="text/javascript">
document.onmousemove = mouseMove;
document.onmouseup = mouseUp;
var dragObject = null;
var mouseOffset = null;
function mouseCoords(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
function getMouseOffset(target, ev){
ev = ev || window.event;
var docPos = getPosition(target);
var mousePos = mouseCoords(ev);
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}
function getPosition(e){
var left = 0;
var top = 0;
while (e.offsetParent){
left += e.offsetLeft;
top += e.offsetTop;
e = e.offsetParent;
}
left += e.offsetLeft;
top += e.offsetTop;
return {x:left, y:top};
}
function mouseMove(ev) {
ev = ev || window.event;
var mousePos = mouseCoords(ev);
if(dragObject){
dragObject.style.position = 'absolute';
dragObject.style.top = mousePos.y - mouseOffset.y;
dragObject.style.left = mousePos.x - mouseOffset.x;
return false;
}
}
function mouseUp(){
dragObject = null;
}
function makeDraggable(item){
if(!item) return;
item.onmousedown = function(ev){
dragObject = this;
mouseOffset = getMouseOffset(this, ev);
return false;
}
}
makeDraggable(document.getElementById("imgTheImage"));
</script>
</div>
</form>
</body>
</html>
另请注意,此 HTML 在非 ASP.Net 页面中可以正常工作。
ASP.Net Javascript 中是否存在导致此问题的内容?有没有人建议在<div> 块内平移 JPEG,这将在 ASP.Net 中工作?我尝试过使用 jQueryUI 库,但结果是一样的。
【问题讨论】:
-
.net 无关紧要,因为这都是客户端行为。我会再次查看可拖动的 jQuery.UI——特别是包含选项:docs.jquery.com/UI/Draggable#option-containment
-
@DA - 如果 .Net 方面无关紧要,那么为什么这在直接的 HTML 页面中有效,但在 ASPX 页面中无效?我使用 jQueryUI 创建了一个示例页面,使用包含选项,该选项在 IE8 中有效,但在 IE7 中查看时存在类似的溢出问题。我在 jQuery UI 板上发布了几条消息,添加了一个错误报告...没有响应,没有修复。
-
我不知道。如果我不得不猜测:.net 正在您的页面中注入脚本或标记或 css,这会干扰您编写的内容。将您的非 .net 页面的呈现页面与您的 .net 页面进行比较。
标签: asp.net javascript image panning