我正在编写一个需要在框中显示内容的网页,如下所示:
[ 1 ] [ 3 ] [ 5 ]
[ 2 ] [ 4 ] [ 6 ]
由于屏幕尺寸不同,有时行数会有所不同。例如,允许显示更多行的屏幕将按如下方式排列:
[ 1 ] [ 4 ]
[ 2 ] [ 5 ]
[ 3 ] [ 6 ]
我遇到的问题是,当我将DIV
s 向左浮动时,它们显示如下:
[ 1 ] [ 2 ] [ 3 ]
[ 4 ] [ 5 ] [ 6 ]
我解决此问题的计划是将每一列包装在一个 div 中,并将其浮动到左侧。但是因为根据屏幕大小可能会有不同的行数,所以我需要使用 jQuery 来完成。
我已经用 jQuery 计算了行数,我只是不知道如何在包装器中包装一定数量的 div。到目前为止,这是我的脚本:
var pageHeight = $("body").innerHeight() - 157; // 157 being the height of the page title
var rowCount = Math.floor(pageHeight / 295); // 295 being the height of each item
var itemCount = $("#itemWrapper").children(".item").length;each item
$("#itemWrapper").height(pageHeight);
所以,如果rowCount = 3
,那么我需要将每组三个.item
s 包装在<div class="column"></div>
. 当然请记住,可能只剩下两个,或者.item
剩下一个。
这看起来很简单,但我什至找不到从哪里开始。当我对此进行更多研究时,如果我发现任何问题,我一定会更新我的问题。
更新1:看起来我可以使用.wrap()
jQuery的功能。我只需要弄清楚如何在多个DIV
.
更新 2:我发现了这段代码,看起来很有希望,但我不知道如何根据行数进行更改:
for (var i = 0;i < itemCount;i+=3) {
$(".item").filter(':eq('+i+'),:eq('+(i+1)+'),:eq('+(i+2)+')').wrapAll('<div class="column" />');
};
似乎对于每个额外的 div,它都需要添加:eq('+(i+1)+')
一个数字更高的花药。不知道如何编写执行此操作的脚本,但我仍在研究。如果我只是更改3' to
rowCount`,它不会正确关闭所有添加的 div。