2013-02-20 102 views
0

比方說,我有一個765px寬530px高的容器div。基於外部尺寸的內部分隔尺寸的公式?

我想用30個小的div動態地填充那個div的大小。由於容器div是一個矩形,所以填充div應該也是一個矩形。基本上,我不想要正方形,我想填補空白。

公式是什麼?

謝謝!

+0

什麼是30個小divs的尺寸? – SergeyS 2013-02-20 20:16:18

+0

這就是我需要的公式。這30個div應該填充這個主空間有多大? – Layne 2013-02-20 20:21:34

+0

30個div應該都有相同的大小? – SergeyS 2013-02-20 20:28:24

回答

0

隨着30你可以做一個5乘6的網格,所以用6和寬度除以5,或高度乘以5和6乘以寬度。如果divs必須有整數大小,你將無法填充寬度或高度與6雖然,因爲都不能被6整除...

0

因此,要找到每個片的寬度和高度,其中N是你有的片數(在這種情況下30),H是盒子的高度,以填補(530在這種情況下),W是框的寬度,以填補(765在這種情況下)...

eachPieceWidth = floor(W/ceil(sqrt(N))) 
eachPieceHeight = floor(H/(N/ceil(sqrt(N))) 

導致...

eachPieceWidth = floor(765/ceil(sqrt(30))) 
eachPieceHeight = floor(530/(30/ceil(sqrt(30))) 

導致...

eachPieceWidth = 127 
eachPieceHeight = 106 
+0

如果您假定外部尺寸接近平方,那麼該公式就可以工作。但是,我詳細闡述了一些細節,讓實際的子分區儘可能接近正方形,這可能更重要。例如,如果你有一個40x800的盒子,並且你想用20個div來填充它,你可能需要1x20的網格,而不是4x5的網格。 – 2013-02-20 22:04:57

0

讓我看看,如果我能在你的問題爲您擴展位。

您有一個容器寬度爲w,高度爲h,並且您想用n填充相等大小的矩形。你想找到x,y,這樣x * y = n,但你想w/x約等於h/y,這樣你的小矩形儘可能接近正方形(因爲如果他們是1xn切片,這可能是相當無用的)和你希望它們美觀。

首先,如果n是一個素數,你可能需要稍微放鬆一下你的假設,否則你最終會得到一堆薄片。否則,我會遍歷所有因子n,並且對於每個因子x計算y=n/x,然後計算w/xh/y。然後選擇|w/x - h/y|最小的那一對,並且您將擁有最多的「方形」div,您可以將它放在容器的網格中。

在你的情況。 w = 765和h = 530。 30的因素是1,2,3,5,6,10,15,30。我們認爲,以下對,這將導致以下的div尺寸(四捨五入):

  • (1,30) - (765,17)
  • (2,15) - (382,35)
  • (3,10) - (255,53)
  • (5,6) - (153,88)
  • (6,5) - (127,106)
  • (10,3) - (76,176)
  • (15,2) - (51,265)
  • (30,1) - (25,530)

在這種情況下,有一對(127, 106)差異最小的是你想出了用公式一樣的,但你能想象,這將不會是如果案件你有一個長而細的容器,或者出於某種原因,你更喜歡有不同長寬比的子div,而不是正方形。在這種情況下,你會選擇最合適的部門。