css - 如何为最少未使用的空间指定 CSS 网格列

标签 css css-grid

假设我有许多元素,排列在宽度相等的网格单元格中,我该如何指定列,以便它们不会留下额外的未使用空间?

原始网格(右侧有空间浪费)示例:

const COLOURS = [
  'navy',
  'green',
  'maroon',
  '#80B0BF',
  '#006241',
  '#573862'
]

window.addEventListener('load', () => {
  const grid = document.getElementById('grid')
  
  for (let i = 0; i < 20; i++) {
    let el = document.createElement('div')
    el.classList.add('element')
    el.style.backgroundColor = _.sample(COLOURS)
    grid.appendChild(el)
  }
})
.grid {
  display: grid;
  width: 400px;
  border: 3px solid black;
  grid-template-columns: repeat(auto-fit, 100px);
  grid-gap: 10px;
}

.element {
  padding: 1em;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

<div class="grid" id="grid">
</div>

最佳答案

使用 minmax(<constant value>, 1fr)用于自动扩展行。

const COLOURS = [
  'navy',
  'green',
  'maroon',
  '#80B0BF',
  '#006241',
  '#573862'
]

window.addEventListener('load', () => {
  const grid = document.getElementById('grid')
  
  for (let i = 0; i < 20; i++) {
    let el = document.createElement('div')
    el.classList.add('element')
    el.style.backgroundColor = _.sample(COLOURS)
    grid.appendChild(el)
  }
})
.grid {
  display: grid;
  width: 400px;
  border: 3px solid black;
  grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
  grid-gap: 10px;
}

.element {
  padding: 1em;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
<div class="grid" id="grid">
</div>

关于css - 如何为最少未使用的空间指定 CSS 网格列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51447392/

相关文章:

css - 如何使用 CSS Grid 和/或/不使用 Flexbox 制作自适应响应式灵活 header ?

html - 遇到 clearfix 类型的问题

javascript - 在 div 内滚动 div 而不是 img 标签

html - 定位一个固定的元素而不将其从文档流中移除

css - 如何在 CSS 网格中进行垂直居中的单行布局?

javascript - 使用 CSS Grids,有没有办法在使用 grid-auto-flow : column? 时包装隐式网格

jquery - 自动滑动需要下一个,上一个选项

ruby-on-rails - 使用 simple_form 限制表单的长度?

javascript - 如何使用html在我的网站右上角设置注销按钮

css - 如何解决图像 "climbing"(重叠)相互重叠的问题?