注意:我將使用這個詞覆蓋與可互換。Javascript數學「繪製」矩形圍繞多個其他矩形實現背景效果
我目前工作的一個引導模式,我強調的元素,使他們從黑暗的半透明背景中脫穎而出。
所以基本上,我有我想要不被覆蓋的元件的選擇,然後我圍繞着它與半透明的深的div,模擬的覆蓋與排除的元件。
我的解決方案的一個突出顯示的元素的偉大工程,但如果這個數字變成2+,變得難以計算出如何將圍繞這些元素的黑色div的。事情是:突出顯示的需求在頁面之間會有很大的不同 - 它不像那些多個元素是靜態的。
所以來說明我的問題:
在這裏,您可以看到,需要投入的頁面,以圍繞BOX2和BOX2與半透明的黑色div會在不同的盒子,基本上用突出顯示的元素模擬疊加效果。對於一個情況下,像這樣的,我可以硬編碼計算,一切都將被罰款,但如果 BOX1上漲超過BOX2高?那麼如果他們不再水平交疊呢?如果有需要突出顯示的Box3會怎麼樣?
在任何情況下,我不知道有多少黑框的地方,在哪裏放置它們。
在這種情況下是否有任何數學公式可以幫助我? jQuery的使用也是可能的,因爲它包含在我的項目中。
如何我會解決這個問題,並使其擴展(多盒,不同的位置)?
寫一個從另一個矩形減去的函數,cr回報一些小矩形的列表。現在,將該函數應用於邊界框和第一個突出顯示的矩形。然後,將該函數應用於從前一次調用返回的每個矩形。沖洗並重復。另請參閱https://en.wikipedia.org/wiki/Constructive_solid_geometry獲取更優化的算法 –
嘿!我提交了一個工作解決方案,你可以看看它嗎? –
你真正想要的是什麼叫做_Region_數據類型。區域在二維空間的矩形有界塊上執行聯合/交集/減法,並且被設計爲使得您可以容易地從矩形構造它們並且從它們解構矩形。我之前用C編寫過代碼,在一般情況下它很複雜。大多數圖形用戶界面原生地包含一個區域類型(Windows,X和Mac都有),並將其用於大多數渲染,但似乎並沒有我能找到的JavaScript實現:令人驚訝的是,似乎沒有NPM包可用去做這個。 –