考虑一下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()
。