考虑一下body标签中的以下代码:

<div id='div1'></div>
<canvas id='c1' width='1000px', height='400px'></canvas>


现在,在脚本标签下,

var canvas = new fabric.Canvas('c1');

canvas.on('mouse:down', getMouse);
function getMouse(ev)
{
var pointer = canvas.getPointer(ev.e);
var origX = pointer.x;
var origY = pointer.y;
console.log(origX+', '+origY);
}


在样式标签下,

#div1
{
float: right;
position: relative;
border-style: solid;
border-width: 1px;
height: 200px;
width: 200px;
display: inline;
}


每次我在div元素的边框的下一行上方单击时,控制台都会记录y的负值。为什么?解决方法是什么?

另外,理想情况下,我希望页面中央的画布两侧有两个元素,我遵循此处给出的CSS:http://alistapart.com/article/holygrail

发生的是div元素都被画布包装器隐藏了。我该如何解决?

最佳答案

canvas.calcOffset()


是你所需要的..

每当您重新定位画布时,请调用上述方法。

这将计算画布元素相对于文档的偏移量。

此方法也作为窗口的“调整大小”事件处理程序附加。

当更改位置/尺寸相关的属性(左,上,比例,角度等)时,也适用于object
 set不会更新对象边框/控件的位置。

如果您需要更新这些,请致电:

setCoords()

08-07 10:33