CSS grid minmax(),max-width为100%

ozxc1zmp  于 2023-04-08  发布在  其他
关注(0)|答案(2)|浏览(108)

此代码使用CSS网格和minmax(30rem, 1fr)

grid-template-columns: repeat(auto-fill, minmax(30rem, 1fr));

一切正常,但是当viewportparent container 小于30rem时,会出现一个水平滚动条。我需要像minmax(min(30rem, 100%), 1fr))这样的东西。有什么想法吗?
https://codepen.io/anon/pen/LmEyer

ul {
  list-style-type: none;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(30rem, 1fr));
  grid-auto-rows: 1fr;
  grid-gap: 10px;
}

li {
  background-color: #aaa;
  padding: 0.5rem;
}
<ul class="list">
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
<ul>
nlejzf6q

nlejzf6q1#

你自己回答了这个问题!!你可以使用min()函数来实现:
codepen

.grid {
  display: grid;
  grid-template-columns:
    repeat(
      auto-fit,
      minmax(min(100%, 30rem), 1fr)
    );
  gap: 20px;
}

我推荐使用这个article来了解更多关于将clampmin()grid-template-column结合的信息

lvmkulzt

lvmkulzt2#

当屏幕宽度为30rem时,听起来你有一个断点。这需要一个媒体查询。
将此添加到您的代码:

@media (max-width: 30rem) {
   ul { grid-template-columns: 1fr; }
}

revised codepen

ul {
  list-style-type: none;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(30rem, 1fr));
  grid-auto-rows: 1fr;
  grid-gap: 10px;
}

li {
  background-color: #aaa;
  padding: 0.5rem;
}

@media (max-width: 30rem) {
  ul {
    grid-template-columns: 1fr;
  }
}
<ul class="list">
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
  <li>grid item</li>
<ul>

相关问题