此代码使用 CSS 网格和minmax(30rem, 1fr).
grid-template-columns: repeat(auto-fill, minmax(30rem, 1fr));
Run Code Online (Sandbox Code Playgroud)
一切正常,但当视口 父容器小于 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;
}Run Code Online (Sandbox Code Playgroud)
<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>Run Code Online (Sandbox Code Playgroud)
小智 2
你自己回答了这个问题!!您可以使用该min()函数来实现此目的:
.grid {
display: grid;
grid-template-columns:
repeat(
auto-fit,
minmax(min(100%, 30rem), 1fr)
);
gap: 20px;
}
Run Code Online (Sandbox Code Playgroud)
我推荐这篇文章来了解有关组合clamp和min()与的更多信息grid-template-column