【发布时间】:2013-03-19 21:10:02
【问题描述】:
如果我有一个宽度为 1000 像素的容器,其中填充了所有宽度为 200 像素的项目。如何计算瓷砖的行/列位置?
更详细的解释:
我知道的唯一变量是容器的宽度(上例中为 1200 像素)、项目的宽度(上例中为 200 像素)和项目索引(从 1 开始)。
仅给出上述信息,我如何通过使用 javascript 输入其索引来计算单元格的行和列。
例如给定每行的最大项目值 6 (可以很容易地从项目宽度和容器宽度计算出来),我需要能够计算出项目编号 7 是在第 2 行第 1 列。
容器和项目的宽度可能并不总是完全可整除,因此该等式必须考虑每行末尾所需的任何额外空白,并自然地将项目包装到下一行,就像它们在 html 浮动布局中一样。
提前致谢
编辑:
通过执行以下操作,我已经设法非常准确地获得了该行:
var itemsperrow = Math.floor(containerwidth/ itemwidth);
var column = Math.ceil(itemindex / itemsperrow )
这是从 1 而不是 0 开始的项目索引;
【问题讨论】:
-
您使用的是什么 HTML 和 CSS?
-
能否请您提供您尝试过的内容以及它如何/为什么不起作用?
-
@DavidThomas HTML/CSS 在很大程度上与这个问题无关,它纯粹是我正在寻找的数学。我只需要了解如何通过索引计算项目的行/列。如果有帮助,所有项目都是固定宽度(200px)和(显示:内联块)。容器宽度会改变,但我现在总是会在执行行/列计算之前该容器的宽度是多少。
-
@JamesMontagne 我尝试了几个粗略的公式,但没有一个是正确的。数学对我来说是一个真正的弱点。我已经设法使用以下公式 Math.ceil(index / columnstotal) 获得该行,columnstotal 的计算方式如下:Math.floor(containerwidth/ itemwidth)。虽然我还没有用大量的项目对此进行测试。
-
items index'是什么意思?如果您不知道框的高度,则不能定义 6 之后的单元格。
标签: javascript math grid