如何在带有填充物的柔性盒的3x3网格上跨两列? [英] How to span two columns on a 3x3 grid with flexbox with paddings?

查看:93
本文介绍了如何在带有填充物的柔性盒的3x3网格上跨两列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

< pre-class =snippet-code-css lang-css prettyprint-override> .page {width:90%margin:auto;}。 display:flex;}。item-container {flex:1; item-container-2x {flex:2;}。item {background-color:#e7e8e9; height:50px; border:1px solid #ddddd;;

< div class = 页 > < div class =row-container> < div class =item-container> < div class =item>< / div> < / DIV> < div class =item-container> < div class =item>< / div> < / DIV> < div class =item-container> < div class =item>< / div> < / DIV> < / DIV> < div class =row-container> < div class =item-container item-container-2x> < div class =item>< / div> < / DIV> < div class =item-container> < div class =item>< / div> < / DIV> < / div>< / div>

是与填充。它导致第二行的网格未对齐。



我使用 flex:1; 等宽网格项目,以及 flex:2; 位于第二行的 flex:1; 旁边。我的理解是flex数字加起来。我试图将它们加到3,但在第二行中,两个网格物品之间只有一个边距会影响间距。我不确定这种方法是否好于为网格物品定义可变宽度,但使用flex对我来说似乎很简单。



我认为还存在一个问题,那就是我'使用 16px 的固定填充与 flex:1/2 的变量宽度。我尝试了百分比保证金,但仍然遇到同样的问题。我很难让我的头脑需要使用填充和保证金的组合,甚至可能会有负利润。



感谢您的任何帮助。

在Flex项目中使用 padding 时,Flexbox会稍微复杂一些计算剩余空间的方式,这使得它的工作更加棘手。



在这种情况下,并继续使用 flex-grow 在Flex项目的子项目(项目)上使用 margin 会更简单。它会给父节点上的 padding 做同样的输出,带有非flex子节点。



Stack snippet

.page {width:90%; margin:auto;}。row-container {width:100%; item:container:flex:1;} item-container-2x {flex:2;}。item {background-color:#e7e8e9; height:50px; border:1px solid #dddddd; margin:16px; / *从.item-container移动并更改为margin* /}

 < div class =page> < div class =row-container> < div class =item-container> < div class =item>< / div> < / DIV> < div class =item-container> < div class =item>< / div> < / DIV> < div class =item-container> < div class =item>< / div> < / DIV> < / DIV> < div class =row-container> < div class =item-container item-container-2x> < div class =item>< / div> < / DIV> < div class =item-container> < div class =item>< / div> < / DIV> < / div>< / div>  


$ b




如果您需要或必须在弹性项目上使用 padding ,则需要补偿已移除项目的 padding(每边16px),并将它作为初始的 flex-basis 添加到 spanned 项目中。



Stack snippet



.page {width:90 %; margin:auto;}。row-container {width:100%; display:flex;}。item-container {flex:1; padding:16px;}。item-container-2x {flex:2 32px; / *改变* /}。item {background-color:#e7e8e9; height:50px; border:1px solid #ddddd;;

< div class = 页 > < div class =row-container> < div class =item-container> < div class =item>< / div> < / DIV> < div class =item-container> < div class =item>< / div> < / DIV> < div class =item-container> < div class =item>< / div> < / DIV> < / DIV> < div class =row-container> < div class =item-container item-container-2x> < div class =item>< / div> < / DIV> < div class =item-container> < div class =item>< / div> < / DIV> < / div>< / div>


$ b




在我的另一个答案中,我制作了一个弹出框表格版本,这可能会对您有所帮助。请查看此链接中的Stack snippet - Flexbox示例 //sackoverflow.com/questions/48570109/layout-a-flex-box-similar-to-a-table/48580275#48580275\">摆放类似于桌子的弹性框?





作为一个方面说明,并且因为您提到以百分比值进行尝试,会给您带来更多问题,你可以在这里阅读更多关于:



查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆