你的网格很好 - 内容是这里的问题。
您可以尝试
word-break
或 overflow
作为解决方法:
word-break
解决方案:
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
border: 2px dotted green;
}
.content {
margin: 2em;
border: 2px solid red;
}
.content p {
word-break: break-word;
}
<div class="grid-container">
<div class="content">
<p>TESTTESTTESTTESTTESTTESTTESTTESTTES</p>
</div>
<div class="content">
<p>TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTES</p>
</div>
<div class="content">
<p>TESTESTTESTTESTTESTTESTTESTTESTTESTTESTTES</p>
</div>
</div>
overflow
解决方案:
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
border: 2px dotted green;
}
.content {
margin: 2em;
border: 2px solid red;
overflow: auto;
}
<div class="grid-container">
<div class="content">
<p>TESTTESTTESTTESTTESTTESTTESTTESTTES</p>
</div>
<div class="content">
<p>TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTES</p>
</div>
<div class="content">
<p>TESTESTTESTTESTTESTTESTTESTTESTTESTTESTTES</p>
</div>
</div>
编辑:显然,
word-break: break-word;
在 Firefox 中不起作用 - 谢谢,@Yaakov Ainspan。再次提醒您应该在多个浏览器中测试您的代码。可以用word-break: break-all;
代替。
@fen1x 的答案很接近,但不完全是。我对此进行了一些实验,发现
word-break: break-all
有效,而 break-word
则无效。 (溢出解决方案有点有效,但不是OP所要求的)。
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
max-width: 100%;
}
.content {
margin: 2em;
word-break: break-all;
}
<div class="grid-container">
<div class="content">
<p>TESTTESTTESTTESTTESTTESTTESTTESTTES</p>
</div>
<div class="content">
<p>TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTES</p>
</div>
<div class="content">
<p>TESTESTTESTTESTTESTTESTTESTTESTTESTTESTTES</p>
</div>
</div>
此外,该解决方案不需要应用于网格项内的各个元素,而是可以直接应用于该项。
尝试:
grid-template-columns: repeat(3, minmax(0, 1fr));