没有行的 Flexbox 垂直网格/仪表板

Posted

技术标签:

【中文标题】没有行的 Flexbox 垂直网格/仪表板【英文标题】:Flexbox vertical grid / dashboard without rows 【发布时间】:2015-06-03 07:24:48 【问题描述】:

我目前正在尝试在 flexbox 中创建一个仪表板,其中 1 项大于其余项:

使用 flex-grow 或仅使用 witdths 创建网格并不难,但困难的部分似乎是两个较小的项目在较大的项目旁边垂直对齐,发生了什么:

这甚至可以通过 flexbox 实现吗?

'Added a simplified version of the code: http://codepen.io/Doordarius/pen/emXLXM/'

【问题讨论】:

【参考方案1】:

您要么严重低估了使用 flexbox 的“高枕无忧”方面,要么您对单元有很多要求 - 例如使用列表、flexbox 项目中的 div、最小/最大尺寸要求。

基本上,使用相同大小的 flexbox 网格最简单的方法是: 1) 将您可以找到的每个填充/边距设置为 0。

padding:0;margin:0;

2) 以您想要的方式创建容器。 Flexbox 可以很好地处理其中的所有内容。

#activecontainer
  position:absolute;
  top: 51%; /* (+) offset by 1x AMOUNT*/
  left: 50%;
  transform: translate(-50%, -50%);
  display:inline-block;
  min-height:100% !important;

3) 开始将您的形状切割成不会增加空间的列和行。

.row, .coldisplay:flex;
.row
  flex-direction: row;
  background-color:black;

.col
  flex-direction:column;
  background-color:green;

4) 将最终项目设置为合理的边距。

.child
  display: flex;
  flex:1;
  margin: 1vmin; /* <--- AMOUNT*/
  width:auto;
  height: 100%;

... 5) 如果您需要重新定位网格,请返回并根据此边距大小设置偏移量。 从技术上讲,您应该为 col 和 row 输入一些非常复杂的第 n 个子节点,但是如果没有实际将边距偏移量作为 SASS 中的变量或类似的东西处理,并且您的示例不需要它,它会变得有点疯狂。

#dashboard >.row padding:1vmin 0; 
#dashboard>.col  padding:0 1vmin; 

那么,嘿,给你...

http://codepen.io/systemaddict/pen/zKxdZy

【讨论】:

以上是关于没有行的 Flexbox 垂直网格/仪表板的主要内容,如果未能解决你的问题,请参考以下文章

如何在角度的行的下一列中打开routerLink?

R闪亮仪表板:如何将垂直滚动条添加到仪表板侧栏?

使用 flexbox 列换行的 Chrome v Firefox 中的垂直间距差异

CRM Online 2015 仪表板

没有弹性盒的垂直居中

如何制作 Plotly Indicator 仪表的网格?