我有一个FlexBox。它的内容是NxN个正方形。我希望容器在给定的显示宽度下尽可能多地容纳这些正方形。我希望FlexBox在页面上居中对齐。
但是问题是当我使用
justify-content: center
图像:
那么最后一行就不会左对齐。但是如果我把
justify-content: left
图像:
那么整个容器在页面上就不再显示为居中对齐了。我能以某种方式实现两者的混合吗?在这个例子中,我将居中对齐5个项目,但最后一行将与前几行中的第一个项目对齐?
最小重现性:
<style>
div { display: flex; flex-wrap: wrap; justify-content: center; }
i { display: block; width: 300px; height: 300px; background: black; margin: 10px; }
</style>
<div>
<i></i> <i></i> <i></i> <i></i> <i></i>
<i></i> <i></i> <i></i>
</div>
3条答案
按热度按时间deyfvvtc1#
您正在构建的布局是一个非常标准的网格。CSS网格将比flexbox更适合。
通过对列使用
auto-fit
并将每个列设置为固定大小,它将在容器中容纳尽可能多的列。justify-content: center
将使列居中,但内容仍将在这些列中从左向右移动。示例:
sqyvllje2#
找到答案here
添加以下CSS工作
但是,它打破了iPad和移动的屏幕的响应,你可以通过添加上述CSS只为大屏幕使用媒体查询来修复.
我不建议这样做,如果可能的话,将flex-box切换到@nathan所述的网格
dffbzjpn3#
这里有一个解决问题的方法。我使用Angular ( typescript ),但原理是一样的。
首先,您需要以下两个方法/函数:
创建了这两个方法后,需要实现它们:
最后,下面是更好的上下文样式:
最终结果: