2013-02-15 22 views
0

我在文档中有HTML5 canvas。在这个画布上,一些div可能隐藏在它们后面的画布上(但画布的一部分仍然可见)。在div中跳过绘图画布

了解画布的位置我该如何检查哪些div实际上遮盖了画布,以便我不再在这些div后面绘制以提高穿透力?

而我怎样才能真正画出一部分画布来节省一些处理能力呢?

回答

1

要确定是否有重叠:

var divid = document.getElementById ("myDiv"); 
var canvasid = document.getElementById ("myCanvas"); 

var div = divid.getBoundingClientRect(); 
var canvas = canvasid.getBoundingClientRect(); 

var overlap = !(div.right < canvas.left || 
       div.left > canvas.right || 
       div.bottom < canvas.top || 
       div.top > canvas.bottom); 

为了防止分层DIV下面画画,我会用这些左/右/上/下偏移绘图画布上。

+0

我不知道哪些div可能在顶部,我想我必须检查所有div(没有父母)。怎么样的浏览器支持boundingClientRect?而且我实际上知道画布的哪些区域是隐藏的,因此可能只隐藏一个角落,而不是整个画布。 – Cristy 2013-02-15 20:52:16

+0

你可以检查每个div,但如果它只是角落,你不觉得检查会创建更多的开销,只是绘图?更不用说你的绘图路径将不得不重新补偿。不知道你的项目的细节,我会说只是覆盖的东西=] – 2013-02-15 21:00:29

+0

应与所有浏览器兼容,而不是每种方法的100% – 2013-02-15 21:02:15