此代码使用带有minmax(30rem, 1fr)
的CSS网格。
grid-template-columns: repeat(auto-fill, minmax(30rem, 1fr));
一切正常,但当 viewport 父容器小于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>
&#13;
答案 0 :(得分:2)
当屏幕宽度为30rem
时,听起来有断点。这需要媒体查询。
将此添加到您的代码中:
@media (max-width: 30rem) {
ul { grid-template-columns: 1fr; }
}
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>