【发布时间】:2018-09-26 22:07:10
【问题描述】:
情况
我有一定数量的正方形。我希望这些正方形始终来自像网格一样的正方形,但它不能有任何空白。我会使用 JavaScript 来做到这一点。网格将像这样存储
var gridLayout = [[1, 2], [3, 4]];
这将导致这个网格
问题
如果我有 16 个方块,结果会是
var gridLayout = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]];
还有视觉
现在这一切都很容易做到,但是如果有 3 个方格呢?我希望它做这样的事情,有利于水平布局而不是垂直布局。
var gridLayout = [[1, 2, 3]];
与视觉
如果我有 8 个方格,它就无法成为完美的方格,所以我想成为
var gridLayout = [[1, 2, 3, 4], [5, 6, 7, 8]];
还有视觉
我尝试过的
我查看了this,但它似乎使用的是矩形而不是正方形。如果没有他们想要的视觉效果,我也很难跟上。
我还查看了this,这有点相似,但似乎与我的情况有点无关。
结论
如何以我想要的方式创建gridLayout?任何帮助表示赞赏。
【问题讨论】:
-
看起来您总是想要与子数组中的元素一样多的列和与数组中的元素一样多的行。这应该很容易使用 CSS 网格:css-tricks.com/snippets/css/complete-guide-grid。还是生成数组的问题?
-
真正的问题是什么?
-
我不知道图形部分,但这似乎很简单。您有一个 rows 数组(第一级),每一行由 cells (第二级)组成。我不确定您对此有何逻辑问题。
-
起点stackoverflow.com/questions/8495687/split-array-into-chunks。选择一个将元素数量均匀划分的块大小。然后更改块大小以获得正确的行数(我不确定如何确定,例如列是否应该总是大于或等于行?如果是这样,请选择
#elements / chunk_size < chunk_size的块大小)。 编辑: 也许选择chunk_size这样chunk_size > Math.sqrt(#elements) && #elements % chunk_size === 0 -
如果元素的数量是质数,您将始终必须使用单行。可以吗?
标签: javascript logic