当前位置: 首页 > 面试题库 >

如何在CSS网格的最后一行居中放置元素?

羊舌承天
2023-03-14
问题内容

我正在使用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 Grid不适合在整行中对齐,因为纵横交错的轨道阻碍了这种方式。以下是详细说明:

或者,将flexbox与一起使用justify-content: center

这会将所有项目打包在该行的水平中心。然后,您的利润将它们推开。

在完全填充的行上,justify-content将没有任何效果,因为没有可用空间来工作。

在具有可用空间的行(在您的情况下,仅最后一行)中,项目居中。

#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>


 类似资料:
  • 问题内容: 我在div中设置了一堆相同大小的块,该div 设置为对齐块。 这些块会水平填充div,并且随着浏览器窗口的缩小,一些块会换行,从而创建更多的行和更少的列。我希望所有内容仍保持居中,最后一行对齐到左侧,如下所示: 当前发生的情况是: 我不能像一个建议那样添加额外的填充div,因为可以有任意数量的块,并且行和列的数量将根据浏览器的宽度而变化。由于相同的原因,我也不能直接设置第7块的样式。无

  • 我试图将底部两个li项(下图中的餐厅信息容器)集中在设置为显示:网格的ul列表中。我原以为添加到ul列表规则集会起作用,但它没有。我还尝试了,它没有改变任何东西。是否有一个解决方案,与CSS网格,将项目在最后一行?

  • 问题内容: 如何在单元格中居中放置值?我正在使用Netbeans。 问题答案: 您需要自定义渲染器。要居中第一列,您可以执行以下操作: 要使所有列都以String数据为中心,您可以执行以下操作:

  • 问题内容: 我正在尝试使用CSS Grid创建一个简单的页面。 我无法做的是将HTML文本集中到相应的网格单元格。 我尝试将内容放置在和选择器内部和外部的单独s中,并使用某些CSS属性无效。 我该怎么做呢? 问题答案: 这个答案有两个主要部分: 了解对齐方式在CSS Grid中的工作方式。 在CSS Grid中居中的六种方法。 如果您仅对解决方案感兴趣,请跳过第一部分。 网格布局的结构和范围 要完

  • 问题内容: 该单元格仅包含一个复选框。由于表标题行中的文本,所以它很宽。如何将复选框居中(在HTML中包含内联CSS?(我知道)) 我试过了 但这没用。我究竟做错了什么? 更新:这是一个测试页。有人可以更正它吗(在HTML中使用CSS内联),以使复选框位于其列的中心? 我已经接受@Hristo的回答-这就是内联格式… 问题答案: 更新 HTML CSS 我希望这有帮助。

  • 自从转到Bootstrap 3以来,我一直在努力使一些图像居中。以前,我会在整个coll元素上使用以分页为中心的类,但现在不起作用了。 此外,我尝试创建类img中心来使用margin:0 auto(根据此处的答案),但这也不起作用,我不确定为什么。如果有人能给我指出正确的方向,那就太好了。