在CSS Grid中如何將元素垂直居中對齊到最後一行?
P粉520204081
2023-08-22 15:57:06
<p>我正在使用CSS網格佈局一些項目,像這樣...</p>
<p><br /></p>
<pre class="brush:css;toolbar:false;">#container {
display: grid;
grid-template-columns: 16.666% 16.666% 16.666% 16.666% 16.666% 16.666%;
}
.item {
background: teal;
color: white;
padding: 20px;
margin: 10px;
}</pre>
<pre class="brush:html;toolbar:false;"><div id="container">
<div class="item">專案</div>
<div class="item">專案</div>
<div class="item">專案</div>
<div class="item">專案</div>
<div class="item">專案</div>
<div class="item">專案</div>
<div class="item">專案</div>
<div class="item">專案</div>
<div class="item">專案</div>
<div class="item">專案</div>
<div class="item">專案</div>
<div class="item">專案</div>
<div class="item">專案</div>
<div class="item">專案</div>
<div class="item">專案</div>
<div class="item">專案</div>
</div></pre>
<p><br /></p>
<p>如何讓最後一行居中而不是左對齊?我不能保證項目的數量,所以希望佈局適用於任意數量的項目。 </p>
<p>這是我應該使用flexbox嗎?還是CSS網格適合使用? </p>
在這篇文章中發現了一個很棒的關於如何使用偽選擇器控制剩餘網格項目的方法:Control Leftover Grid Items with Pseudo-selectors
CSS Grid不適合在整行上進行對齊,因為交叉軌道會阻擋道路。這裡有一個詳細的解釋:
作為替代方案,使用flexbox並設定
justify-content: center
。這將把所有項目打包在行的水平中心。然後,您的邊距將把它們分開。
在完全填滿的行上,
justify-content
將無法運作,因為沒有空閒空間可供其工作。在具有空閒空間的行上(在您的情況下,僅為最後一行),項目將居中顯示。