是的,你只需要做画布的左侧位置,涉及到的水平滚动条“栏”的左侧位置,如下
令W是画布宽度,设D是包含div和滚动条的宽度,B是滚动条“bar”的宽度。 W> D
Initiall相对于包含div,canvas的左侧为0,滚动条的“bar”左侧为0。
画布可见的分数d/W等B = d * d/W
“扎”的左手边缘的范围是0到DB和为“栏中的”向右移动画布按比例向左移动。
令L为从所述滚动条的左手边缘的“BAR”的当前位置,移动的分数为L/d等画布移动L * W/d向左
即,当(bar).style.left = L(canvas).style。左= -L * W/D
这是一个使用JQuery的小提琴,希望能够满足您的需求。
http://jsfiddle.net/GdsEa/
Javascript代码如下所示
var W=2000;
var D=500;
var B=D*D/W;
document.getElementById("wrap1").style.width=D+"px";
document.getElementById("hbar").style.width=B+"px";
var canv=document.getElementById("mycanvas");
canv.width=W;
var ctx=canv.getContext("2d");
ctx.beginPath();
ctx.moveTo(100,100);
ctx.lineTo(200,100);
ctx.lineTo(200,200);
ctx.lineTo(100,200);
ctx.closePath();
ctx.fillStyle="rgb(255,0,0)";
ctx.fill();
ctx.beginPath();
ctx.moveTo(W-100,100);
ctx.lineTo(W,100);
ctx.lineTo(W,200);
ctx.lineTo(W-100,200);
ctx.closePath();
ctx.fillStyle="rgb(0,0,255)";
ctx.fill();
$(".bar").draggable({ containment:"parent" });
$(".bar").on("drag", function(event, ui) {var L=ui.position.left;
canv.style.left=(-L*W/D)+"px"});
注意内含div,帆布,滚动条和条的宽度在代码通过设置W和d被覆盖,所以,它很容易改变这些值。
太好了,那就是我正在寻找的东西,现在我只需要插入一些事件并查看是否可以在平板电脑上拖动元素。 – coulix 2013-02-18 22:22:33