gpt4 book ai didi

html - 如何创建具有等宽列的居中 CSS 网格?

转载 作者:搜寻专家 更新时间:2023-10-31 08:51:15 25 4
gpt4 key购买 nike

我想要一个菜单​​栏,其中所有菜单项的宽度都相同(与最宽的菜单项一样宽)。菜单项的数量可能会有所不同。如果有额外空间,菜单应在其容器内居中。

如果元素不能放在一行中,它们可能会换行,但它们仍应具有相同的宽度。像这样:

|    [   short   ] [loooooooong] [  between  ]    |
| [ wrapped ] |

我可以用 CSS 做到这一点吗?

我尝试使用 display:grid,但失败了:

.container { 
border: 1px solid black;
display:inline-block;
}

.menu {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(50px, -webkit-max-content));
grid-template-columns: repeat(auto-fit, minmax(50px, max-content));
justify-content: center;
grid-gap: 10px;

background: #eee;
}

.item {
border: 1px solid #aaa;
background: yellow;
white-space: nowrap;
}
<div class="container">
<h2>Two items</h2>

<p>
These should have equal widths (as wide as the widest one is) and be centered within the container.
</p>

<div class="menu">
<div class="item">Short</div>
<div class="item">Looooooooooong</div>
</div>

<p>
They are centered all right, but don't have equal widths.
</p>

<h2>Three items</h2>

<p>
These three should also have same width with each other.
</p>

<div class="menu">
<div class="item">First item</div>
<div class="item">Second item</div>
<div class="item">Third</div>
</div>

<p>
They are centered all right, but don't have equal widths.
</p>

<h2>So many items that they won't fit on one line</h2>

<p>
These should also have equal widths, but they should wrap to the next row. I don't care whether the second row is centered as long as the items are aligned with the row above.
</p>

<div class="menu">
<div class="item">First item</div>
<div class="item">Second item</div>
<div class="item">Third item, a longer one</div>
<div class="item">Fourth item</div>
<div class="item">Fifth item</div>
<div class="item">Sixth item</div>
<div class="item">Seventh item</div>
<div class="item">Eight item</div>
<div class="item">Ninth item</div>
<div class="item">Tenth item</div>
<div class="item">Item number 11</div>
<div class="item">Item number 12</div>
<div class="item">Item number 13</div>
<div class="item">Item number 14</div>
<div class="item">Item number 15</div>
<div class="item">Item number 16</div>
<div class="item">Item number 17</div>
<div class="item">Item number 18</div>
<div class="item">Item number 19</div>
<div class="item">Item number 20</div>
<div class="item">Item number 21</div>
<div class="item">Item number 22</div>
<div class="item">Item number 23</div>
</div>
<p>
They have equal widths, but the width is the min width given in minmax and the content doesn't fit within the item.
</p>
</div>

(CodePen中相同:https://codepen.io/jarnoan/pen/gxrEpR)

问题Centered table-like layout with columns of equal widths using CSS?类似,但是按钮的数量是固定的,没有换行。

它不需要显示:网格。

最佳答案

您是否尝试过 1fr 1fr 1fr(每个代表整体的 1 个分数,在本例中为列)

其他人推荐使用 flexbox,但 css-grid 理论上可以做任何 flexbox 可以做的事情,但还有一个额外的好处是二维的(相对于只有 1 w/flexbox)。此外,css-grid 是在浏览器级别集成的,因此不依赖于任何框架。

关于html - 如何创建具有等宽列的居中 CSS 网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45437980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com