2013-02-15 52 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