我希望有一个项目的描述列表,通过使用CSS网格,它们位于单个行上,每个项目的宽度变化很小,并且当宽度变得太小而无法容纳它时,它会隐藏每个项目。 / p>
到目前为止,我已经提出了这个问题,它充分利用了auto-fill
的{{1}}和minmax
属性。目前我有一个黑客隐藏不适合的项目。这是设置grid-template-columns
,但也要在overflow: hidden
中设置相对于列表中项目数量的大量0
。如果您移除grid-template-rows
(并调整宽度),您会看到下面有溢出的项目。
有没有办法可以隐藏这些溢出的元素而不需要对大量的grid-template-rows
进行硬编码?
0
div {
display: inline-block;
}
dl {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr));
grid-column-gap: 20px;
grid-template-rows: 1fr 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
overflow: hidden;
}
dd {
font-weight: bold;
margin: 0;
}
答案 0 :(得分:1)
它不是一个不同的解决方案,但使用repeat()
可以避免写出一堆0
s。
所以,请改用grid-template-rows: 1fr repeat(50, 0);
:
或者,您可以将高度设置为dl
,比如说80px
,然后使用grid-template-rows: repeat(auto-fill, 80px);
。如果内容的长度/高度可变,则可能无法选择此选项。
div {
display: inline-block;
}
dl {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(5rem, 1fr));
grid-column-gap: 20px;
grid-template-rows: repeat(auto-fill, 80px);
overflow: hidden;
height: 80px;
}
dd {
font-weight: bold;
margin: 0;
}

<dl>
<div>
<dt>Column name</dt>
<dd>Example value</dd>
</div>
<div>
<dt>Column name</dt>
<dd>Example value</dd>
</div>
<div>
<dt>Column name</dt>
<dd>Example value</dd>
</div>
<div>
<dt>Column name</dt>
<dd>Example value</dd>
</div>
<div>
<dt>Column name</dt>
<dd>Example value</dd>
</div>
<div>
<dt>Column name</dt>
<dd>Example value</dd>
</div>
<div>
<dt>Column name</dt>
<dd>Example value</dd>
</div>
<div>
<dt>Column name</dt>
<dd>Example value</dd>
</div>
<div>
<dt>Column name</dt>
<dd>Example value</dd>
</div>
<div>
<dt>Column name</dt>
<dd>Example value</dd>
</div>
<div>
<dt>Column name</dt>
<dd>Example value</dd>
</div>
<div>
<dt>Column name</dt>
<dd>Example value</dd>
</div>
<div>
<dt>Column name</dt>
<dd>Example value</dd>
</div>
</dl>
&#13;