2010-09-10 65 views
3

1)我们有<body>,它的heightwidth不同(不同的分辨率)。jQuery用图像填充身体

2)其中有很多图像块,可以超过50块。

3)widthheight对于每个块是相等的。

我们如何填写body所有可用的图像,这些图像可以在当前分辨率下显示,并隐藏其他图像?

应该没有水平/垂直滚动条。

例如,我们在<body>内有50个块。 1024x768只能容纳20个,所以我们展示他们并隐藏他人。如果用户将浏览器窗口大小更改为1280,则会显示更多的块等。

其实我不要求你写完整的脚本。我需要一些已经工作的类似脚本的链接。

它更好,如果块可以改变自己(如幻灯片)。

谢谢。

回答

2

我试图找出一种算法:

1)获取包含块(容器相对应,这样,当你调整窗口的大小它扩大)容器的宽度。为了获得宽度使用.width.outerWidth

2)将容器的宽度除以块的宽度,使其落地。现在你知道一排有多少块。

3)要计算高度,这可能会很棘手,因为您可能有一个标题或导航等,这会削减垂直空间。所以这样做:

3.1)得到窗口$(window).height();

3.2)的高度,获取容器的上抵消$('#container').offset().top

3.3)减去窗口高度偏移 - 现在你有“真正的”高度可用 (注意:如果您有页脚等,您也必须减去此储存空间)

4)将实际可用的垂直空间除以块的高度(注意边距/填充)数。现在你知道有多少行可以放入你的空间。

5)乘以最大值。行和最大。我们已经计算出的柱子,这是最大的块数量。

6)让你的块像$('.block')和迭代通过$('.block').each(function(index) { ... });现在如果索引大于最大值。我们计算的块数,隐藏它们!

7)安装一个事件处理$(window).resize(function() { })做上述步骤的调整

0

把它们具有的CSS溢出块内部:隐藏属性集。这样你可以显示他们全部,但使用只会看到适合块的数量。无需代码。

+0

你可以看到一部分不适合的块! – sled 2010-09-10 22:19:33

+0

@sled - 在这种情况下,一小部分Javascript将该框的大小调整为已知图像大小的最接近倍数。还是比较容易的。 – Spudley 2010-09-10 22:28:27