这被称为动态网格或类似 Pinterest 的网格。它被Pinterest推广。
本质上,您不能单独使用 CSS 和 HTML 来做到这一点。这种类型的网格需要使用一些 Javascript 或服务器端处理来处理。我建议使用 Javascript 并检查许多 jQuery 插件中的一个,这些插件完全符合您的要求(请注意,您链接到的第一个站点使用插件进行布局):
这些中的任何一个都可以解决问题。
Masonry让您使用 CSS 设置容器宽度和块之间的间距。您可以在 Javascript 中指定所需的列宽。块宽和间距的计算将决定容器中有多少列。
Wookmark和BlocksIt有类似的配置选项。它们让您指定容器宽度,然后指定块宽度。在它和偏移量(块之间的距离)之间,您可以对其进行排列,以便最终得到 3 列相同宽度的列。
开箱即用的Freetile不支持相同宽度的列(其功能之一),但是您可以通过一点 CSS 和/或直接修改插件来完成相同的事情。
这里的主要部分是设置这些插件之一并使其工作。一旦到位,您只需要根据自己的喜好调整 CSS。这些插件中的每一个都提供了工作示例以及代码示例和文档。Masonry 的简单实现如下所示:
HTML:
<div id="grid-container">
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
</div>
CSS:
#grid-container {
width: 940px; //width of your container
}
.post {
margin: 10px; //spacing between each block/post
}
Javascript:
$('#grid-container').masonry({
itemSelector: '.post', //selector for each block
columnWidth: 300 //width of your columns
});
每个块的帖子都会很300px
宽,10px
周围都有边距。你最终会得到 3 列,每列10px
之间都有边距。
列出的每个插件都以可免费用于个人/商业用途的方式获得许可(请参阅每个插件的各自许可),所以不用担心。