假设我的容器div为765像素宽,宽530像素。
我想动态填充30个较小div的div。由于容器div是一个矩形,填充div也应该是一个矩形。基本上,我不想要正方形,我想填补空间。
公式是什么?
谢谢!
答案 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
等大小的矩形填充它。您希望找到x
,y
,x * y = n
,但您希望w/x
大约等于h/y
,以便您的小矩形尽可能接近尽可能正方形(因为如果它们是1xn
切片,这可能是非常无用的)并且你希望它们在美学上令人愉悦。
首先,如果n
是素数,那么您需要稍微放松一下您的假设,否则最终会得到一堆薄片。否则,我会遍历n
的所有因素,并为每个因素x
计算y=n/x
,然后计算w/x
和h/y
。然后选择|w/x - h/y|
最小的那对,你将拥有最多的'square` div,你可以将它放在一个容器的网格中。
在你的情况下。 w
= 765,h
= 530。因子30分别为1,2,3,5,6,10,15,30。我们考虑以下几对,这将导致以下div大小(向下舍入):
在这种情况下,对(127, 106)
对的最小差异与您使用公式时的差异相同,但您可以想象如果您有一个长而薄的容器,或某些情况,情况并非如此之所以你喜欢让不同长宽比的儿童div不是正方形。在这种情况下,您会选择最合适的部门。