html - 带 Angular Material 的 Pinterest 布局

标签 html css angularjs layout material-design

我需要以下布局 Angular Material如果卡片是从左到右插入的,则在可用宽度的末尾换行并填充卡片之间的任何垂直空间。所有卡片的宽度相同,但高度不同:

enter image description here

这可以用普通的 Angular 和 CSS 实现吗?怎么办?


我试图用 display:flex 来完成这个,但我无法摆脱垂直空间:

.cards {
        display: flex;
        justify-content: flex-start;
        flex-wrap: wrap;
}

enter image description here


我还找到了一个纯 CSS 解决方案,它解决了空间问题,但顺序不同,并且还需要固定高度: https://codepen.io/michellebarker/pen/zvxpoG

enter image description here


更新

附加要求:

  • 响应式布局:根据窗口的不同,有更少或更多的列;但它们总是填满所有可用空间(自适应列宽,例如 100%、50% 等)
  • 卡片的插入必须使用 ng-repeat="card in cards | orderBy:order:reverse"

最佳答案

目前我无法帮助您解决 Angular 解决方案,但是如果您能够将 React 解决方案转换为 Angular,那么以下算法和代码可能会有所帮助。

因此,为了生成该布局,将元素划分为 n 列,并让默认布局将它们垂直堆叠。然后使用 flexbox 或百分比宽度布置这些列。

为了使网格响应订阅窗口大小调整事件并计算所需的列数。 columnCount = itemWidth => availableWidth => Math.floor(availableWidth/itemWidth)

看看working React solution . 响应解决方案是available here .

关于html - 带 Angular Material 的 Pinterest 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40742897/

相关文章:

javascript - 使用边框的带有右圆 Angular 箭头 css 的部分划分

javascript - HTML/CSS 元素在滚动时消失。

javascript - 重新创建 Fabric.js Canvas 并导出为图像?

css - Bootstrap 2 - 网格列环绕行为是否与 Bootstrap 3 相同?

javascript - 在此特定示例中如何将 Javascript 变量传递给 Twig

javascript - Yeoman/Angular/Coffee .when() 路由器不会路由 - 无法获取

html - 为什么 html/template 不显示所有 html 条件注释?

javascript - 下拉样式在 Mac 中无法正确显示?

php - 将日期格式从 2018-09-27T18 :30:00. 000Z 更改为 2018-09-27 13:17:14

javascript - module.run() 和 $state.go()