分页取决于 window 大小 - 查找每页项目数的方法

pagination depending on window size - approach to find number of items per page

抱歉拖了这么久,非常感谢您平时的时间和指导。

我有一个 div 尺寸未知;事实上,它的宽度和高度是使用百分比设置的,因此以像素为单位的最终值取决于 window innerWidthinnerHeight 属性。

我需要在 div 中创建一个 ajax 分页。换句话说,我有两个 child div s(下图)。第二个用于分页链接。第一个负责保存项目(水平和垂直对齐)。它将(自动)为 unknown width 。因此,内部项目的数量取决于其最终宽度和高度,因为所有项目都有固定的已知宽度和高度(假设 80 像素宽度和 50 像素高度)。

我希望下图能最好地说明我的问题:

目标 是找到一个好的方法来找到 X 和 Y 的值。

这两个值将有助于找到每页的项目数(用于服务器端的分页)。分页链接将通过div将总页数按此值来创建。注意:一切都是用 ajax.

完成的

我打算做什么:

您如何看待这种方法?有没有其他更好的方法来实现这个目标?是否可以在 <html> 标签之前创建一个 <script> 标签只是为了提前计算 window 大小?

N.B: 对于服务器端部分,我设法通过我正在使用的 ORM 库提供的一些函数对结果进行分页。我使用 server-side 模板引擎将项目页面呈现为 HTML。我准备根据要求为这部分提供任何代码。谢谢

您永远无法独自获得正确的布局数学。我的建议是事先布置好所有项目(弹性盒子在这里是理想的!),计算数量,然后使用 ajax.

填写它们

Here's a quick demo我激动了。实际的 JS 非常简单,使用 jQuery.

var MARGIN = 10; //This should match your CSS

var itemContainerHeight = $(".foo").height();
var count = 0;

$(".item").each(function () {
  if ($(this).position().top + $(this).height() + MARGIN > itemContainerHeight) {
    $(this).hide();
  } else {
    count++;
  }
});

$('.pagination').text("I can display "+count+" items!");

重要的是包含 .position() 的那一行。这将获取每个项目顶部边缘的位置,添加高度以找到它们的底部边缘,并检查它是否超过了项目容器的边界。

之后您可以使用计数从服务器查询必要的项目。我还建议在所有项目上使用 visbility: hidden;,这样用户就不会在准备好之前看到它们。