* {
  box-sizing: border-box;
}
main {
  padding: 0 20px;
  width: 100%;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  grid-gap: 1em;
}

article {
  border-radius: 10px;
  padding: 20px;
  color: #fff;
}

article:nth-child(odd) {
  background-color: #55BBE9;
}

article:nth-child(even) {
  background-color: #afbe29;
}

<main>
  <article>1</article>
  <article>2</article>
  <article>3</article>
  <article>4</article>
  <article>5</article>
  <article>6</article>
  <article>7</article>
  <article>8</article>
  <article>9</article>
</main>





在上面的示例中,如何在不设置article的情况下将每行限制为只有3个max-width窗格?请注意,我仍然需要响应能力。只是当我扩展浏览器窗口时,我不希望窗格4、5、6等捕捉到第一行。

最佳答案

您只需要将grid-template-columns设置为自动即可。
576像素或更小的屏幕尺寸将转换为单列:



* {
  box-sizing: border-box;
}

main {
  padding: 0 20px;
  width: 100%;
  display: grid;
  grid-template-columns: auto auto auto;
  grid-gap: 1em;
}

@media (max-width: 576px) {
  main {
    grid-template-columns: auto;
  }
}

article {
  border-radius: 10px;
  padding: 20px;
  color: #fff;
}

article:nth-child(odd) {
  background-color: #55BBE9;
}

article:nth-child(even) {
  background-color: #afbe29;
}

<main>
  <article>1</article>
  <article>2</article>
  <article>3</article>
  <article>4</article>
  <article>5</article>
  <article>6</article>
  <article>7</article>
  <article>8</article>
  <article>9</article>
</main>

10-06 02:41