html - 给定容器中的元素网格,如何处理导致元素溢出的边距?

标签 html css css-grid

我有一个 608px 宽的容器,我的设计要求每行有 3 个元素。其中每个元素都是 192px。并且只有行中的前 2 项的 margin-right16px

问题是 CSS 为所有元素添加了 16pxmargin-right

我如何更新代码以使其每行 3 个元素,其中每行只有第一个和第二个元素具有 margin-right 填充?

我有一个 hacky 版本,我在其中制作了 margin-rightmargin-left 8px 然后添加了一个负数 -8px 容器上的边距,但这感觉很老套,我很好奇现在是否有更优雅的方式使用 CSS3 来实现这一点。

.container {
  width: 608px;
  min-width: 608px;
  max-width: 608px;
  background: #efefef;
  display: flex;
  flex-wrap: wrap;
}

.item {
  width: 192px;
  min-width: 192px;
  max-width: 192px;
  margin: 0 16px 16px 0;
  border: 1px solid #ccc;
  box-sizing: border-box;
}
<div class="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>

最佳答案

这是 CSS-grid 解决方案,您可以轻松控制元素之间的间隙,也不需要为它们显式指定宽度:

.container {
  width: 608px;
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  grid-column-gap:16px;
  background: #efefef;
}

.item {
  border: 1px solid #ccc;
  box-sizing: border-box;
}
<div class="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>

关于html - 给定容器中的元素网格,如何处理导致元素溢出的边距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49992528/

相关文章:

html - 显示超出下拉 div 的图像

java - 从 HTML 表中进行多重搜索

html - 如何让 HTML 表单与前一个表单的右侧对齐?

php - 使用 PHP 的动态 CSS

css - 我可以去除 CSS 文件的所有内容吗?

html - CSS minmax 无效的属性值

css - CSS 网格中的图像

在 google chrome v69 中组合 "transform"和网格单元格边框时出现 CSS 问题

java - JSP/JSTL 在表格中自动换行

jquery - 我试图在 jQuery : 中划分两个变量