html - 如何在 CSS Grid 的最后一行居中放置元素?

标签 html css flexbox css-grid

我正在使用 CSS 网格来布置一些像这样的元素...

#container {
  display: grid;
  grid-template-columns: 16.666% 16.666% 16.666% 16.666% 16.666% 16.666%;
}

.item {
  background: teal;
  color: white;
  padding: 20px;
  margin: 10px;
}
<div id="container">
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
</div>

如何让最后一行居中而不是左对齐?我不能保证元素的数量,所以想要使布局看起来适合任何数量的元素。

这是我应该改用 flexbox 的东西吗?或者 CSS 网格是否适合使用?

最佳答案

CSS 网格不适合整行对齐,因为交叉轨道会挡路。详细解释如下:

作为替代方案,使用带有 justify-content: center 的 flexbox。

这会将所有元素打包在行的水平中心。然后你的边距将它们分开。

在完全填充的行上,justify-content 将无效,因为 there's no free space for it to work .

在有空闲空间的行上(在您的例子中,只有最后一行),元素居中。

#container {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}

.item {
  flex: 0 0 calc(16.66% - 20px);
  background: teal;
  color: white;
  padding: 20px;
  margin: 10px;
}

* {
  box-sizing: border-box;
}
<div id="container">
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
  <div class="item">Item</div>
</div>

关于html - 如何在 CSS Grid 的最后一行居中放置元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46276793/

相关文章:

html - 粘性页脚不完全位于移动设备的底部

iphone - 背景颜色不会在 iPhone 上使用 Bootstrap 拉伸(stretch)以适应 div

html - 具有多宽度列的 Flexbox 网格

css - 使用显式高度时 react native 垂直文本对齐

javascript - WKWebView 不支持 JavaScript 类

php - 格式化 PHP Echo

html - 相同的 HTML 电子邮件在 Outlook 和 iPad 电子邮件中应该看起来不同

css - 使用 CSS 选择第一个后代

javascript - setInterval 和 jquery

react-native - 如何通过保持宽高比来根据其宽度动态设置 View 高度?