好的,所以我将尽力解释这一点。我创建了一个小部件,它将根据类别从主页上的帖子中提取特色图像。现在它吸引了 4 个帖子。我希望可以选择加入 2、3、4 或 6 个帖子。我还想根据进来的帖子数量来改变布局。是否可以只显示 2、3、4 或 6 个帖子,我将如何根据进来的帖子数量来改变布局。我在想它会为每个帖子数量或类似的东西引用css中的一个容器类。任何链接、教程或建议将不胜感激!谢谢, - 迈克尔
1 回答
纯 CSS
这提供了一种 CSS3 方法来实现您想要的,并为 CSS2 提供了一个回退。基本上,您有一个包装器来定位您的帖子项目,这将是直接在该包装器中的唯一子项(或者,至少是特定“标签”类型的唯一子项,这里是 a div
)。所以像下面这样,只有孩子的数量可以是 2、3、4 或 6(根据您的要求)。
简单的 HTML(这不一定是div
元素;只是说明)
<div class="postWrapper">
<div>This is a post</div>
<div>This is the second post</div>
</div>
设置默认 CSS2
对于 IE7/8,无论在这两个浏览器中显示多少帖子,这将是默认显示,使用此选择器:
.postWrapper > div { ... }
设置花式 CSS3
这是根据帖子的数量完成的,并将显示在所有 CSS3 浏览器中。它按以下顺序使用这一系列选择器:(我们在这里使用级联来发挥我们的优势):
.postWrapper > div:nth-last-of-type(2),
.postWrapper > div:nth-last-of-type(2) ~ div {
... your two display css ...
}
.postWrapper > div:nth-last-of-type(3),
.postWrapper > div:nth-last-of-type(3) ~ div {
... your three display css ...
}
.postWrapper > div:nth-last-of-type(4),
.postWrapper > div:nth-last-of-type(4) ~ div {
... your four display css ...
}
.postWrapper > div:nth-last-of-type(6),
.postWrapper > div:nth-last-of-type(6) ~ div {
... your six display css ...
}
这样做是利用:nth-last-of-type()
选择器通过包装器的子 div 的数量“倒数”,对其应用样式div
,然后使用通用兄弟组合~
器来设置所有其他 div 的样式.postWrapper
(理论上)首先div
. 它使用 对前两个执行此操作:nth-last-of-type(2)
,但是如果包装器包含三个,则使用的下一组选择器将:nth-last-of-type(3)
覆盖前一个(2)
选择器,依此类推。这样,通过级联中的一系列覆盖css,我们更改了post元素数量的设置。
您可以在此小提琴中看到此技术的示例,用于说明目的。
注意:因为我们使用级联来覆盖,所以您必须确保处理任何先前设置的 css。在我的小提琴示例中,请注意我如何将 amargin
放在四人组上,但后来我将它移到了六人组上。如果我margin
在第 6 组中没有提到任何内容(即没有覆盖),那么第 6 组的元素 3-6(但不是 1-2)仍然会根据之前的 4 组设置应用边距.