2013-02-20 119 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,而不是正方形。在这种情况下,你会选择最合适的部门。