简要地:
如何在 CSS 中布置 N 列随机高度的 portlet,以便如果调整浏览器大小,减少列的数量(使用 @media (min-width:))并且 portlet 仍然很好地放在页面上没有间隙。
这类似于将 多个固定宽度/可变高度框浮动到 2 列中 ,但更通用。
细节:
我已经构建了一个 Web 应用程序(PHP / Zend 框架),其中包含一个由一系列 portlet 组成的“仪表板”页面。Portlet 可以在流畅的布局中排列成 1、2、3 或 4 个等宽列(用户可选择)。当用户调整浏览器窗口的大小时,列会扩展以填充可用宽度,portlet 也会水平扩展。每个 portlet 的垂直高度由其内容定义。有些只有 1-2 行,有些可以是 30-40+ 行的文本/表格/图像等。
我想把它变成“响应式设计”,这样用户就不必选择列数。在小屏幕(例如 iPhone)上,只会显示一列。在宽屏幕上,它们可能有 4 或 5 列。如果调整浏览器窗口的大小,列数将向上或向下调整以允许 portlet 保持大约 300-400 像素宽。
我想我可以用一点 jQuery 和一些服务器端支持 (PHP) 来做到这一点,但如果可能的话,我更愿意在 CSS 中完成这一切(没有/最少的 javascript)。