Z_z*_*z_Z 6 html css centering flexbox css-grid
我有一个基本的网格设置如下:
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(33rem, 1fr));
grid-gap: 1rem;
}
Run Code Online (Sandbox Code Playgroud)
当网格自动分成新行时,我要么希望新行上的元素占据一定比例的空间,要么居中以便它们看起来不错。
例如,如果我在一行中有 3 个元素,那么我希望每个元素占用 33% 的容器空间。但是,当网格中断并且新行上只有 1 个元素时,我希望该元素占据行宽的 100%,或者至少看起来居中——这与将元素全部放置在中间的默认行为相反。向左移动,仅占用 1fr 的空间。
同样,如果新行中有 2 个元素,则每个元素应占据行空间的 50%,或者两个元素一起看起来应居中。
我不知道总共会有多少个元素。理想情况下,该解决方案应适用于最少 1 个到任意数量的元素。
如果有人有任何想法,请告诉我。谢谢。
这是 Flexbox 的工作,我认为用 CSS grid 不容易实现:
.grid-container {
display: flex;
flex-wrap:wrap;
border:1px solid;
margin:2px;
}
.grid-container>div {
height: 50px;
background: red;
margin: .5rem;
flex: 1 1 calc(33% - 1rem);
}Run Code Online (Sandbox Code Playgroud)
<div class="grid-container">
<div></div>
<div></div>
<div></div>
</div>
<div class="grid-container">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div class="grid-container">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>Run Code Online (Sandbox Code Playgroud)
如果您希望元素居中,只需执行以下操作:
.grid-container {
display: flex;
flex-wrap:wrap;
border:1px solid;
margin:2px;
justify-content:center;
}
.grid-container>div {
height: 50px;
background: red;
margin: .5rem;
flex: 0 1 calc(33% - 1rem); /*disable the flex-grow*/
}Run Code Online (Sandbox Code Playgroud)
<div class="grid-container">
<div></div>
<div></div>
<div></div>
</div>
<div class="grid-container">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div class="grid-container">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13047 次 |
| 最近记录: |