根据外部div的尺寸确定内部div尺寸的公式?

时间:2013-02-20 20:10:37

标签: math html pixels

假设我的容器div为765像素宽,宽530像素。

我想动态填充30个较小div的div。由于容器div是一个矩形,填充div也应该是一个矩形。基本上,我不想要正方形,我想填补空间。

公式是什么?

谢谢!

3 个答案:

答案 0 :(得分:0)

使用30可以制作5乘6的网格,因此将高度除以6,将宽度除以5,或将高度除以5,将宽度除以6.如果div必须具有整数大小,则无法填充但是宽度或高度为6,因为它们都不能被6 ...

整除

答案 1 :(得分: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

答案 2 :(得分:0)

让我看看我是否可以为你扩展你的问题。

您有一个宽度为w且高度为h的容器,并且您希望用n等大小的矩形填充它。您希望找到xyx * y = n,但您希望w/x大约等于h/y,以便您的小矩形尽可能接近尽可能正方形(因为如果它们是1xn切片,这可能是非常无用的)并且你希望它们在美学上令人愉悦。

首先,如果n是素数,那么您需要稍微放松一下您的假设,否则最终会得到一堆薄片。否则,我会遍历n的所有因素,并为每个因素x计算y=n/x,然后计算w/xh/y。然后选择|w/x - h/y|最小的那对,你将拥有最多的'square` 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不是正方形。在这种情况下,您会选择最合适的部门。