居中一個元素

在本教程中,你將學習如何使用彈性盒(flexbox)網格(grid)將一個盒子在其容器內水平和垂直居中。

an element centered inside a larger box

依賴項

將一個專案在另一個盒子裡水平和垂直居中。

示例

點選下面程式碼塊中的“Play”按鈕,在 MDN Playground 中編輯示例。

html
<div class="container">
  <div class="item">I am centered!</div>
</div>
css
.item {
  border: 2px solid rgb(95 97 110);
  border-radius: 0.5em;
  padding: 20px;
  width: 10em;
}

.container {
  border: 2px solid rgb(75 70 74);
  border-radius: 0.5em;
  font: 1.2em sans-serif;

  height: 200px;
  display: flex;
  align-items: center;
  justify-content: center;
}

使用彈性盒(flexbox)

要將一個盒子在其容器內居中,首先透過將其display屬性設定為flex,將包含盒子變成一個彈性容器。然後將align-items設定為center以實現垂直居中(在塊軸上),將justify-content設定為center以實現水平居中(在行內軸上)。將一個盒子居中於另一個盒子中就是這麼簡單!

HTML

html
<div class="container">
  <div class="item">I am centered!</div>
</div>

CSS

css
div {
  border: solid 3px;
  padding: 1em;
  max-width: 75%;
}

.item {
  border: 2px solid rgb(95 97 110);
  border-radius: 0.5em;
  padding: 20px;
  width: 10em;
}

.container {
  height: 8em;
  border: 2px solid rgb(75 70 74);
  border-radius: 0.5em;
  font: 1.2em sans-serif;

  display: flex;
  align-items: center;
  justify-content: center;
}

我們為容器設定了一個高度,以證明內部專案確實在容器內垂直居中。

結果

除了在容器上應用align-items: center;,你還可以透過在內部專案本身上設定align-selfcenter來垂直居中內部專案。

使用網格(grid)

將一個盒子居中於另一個盒子中的另一種方法是,首先將包含盒子變成一個網格容器,然後將其place-items屬性設定為center,以使其專案在塊軸和行內軸上都居中對齊。

HTML

html
<div class="container">
  <div class="item">I am centered!</div>
</div>

CSS

css
div {
  border: solid 3px;
  padding: 1em;
  max-width: 75%;
}

.item {
  border: 2px solid rgb(95 97 110);
  border-radius: 0.5em;
  padding: 20px;
  width: 10em;
}

.container {
  height: 8em;
  border: 2px solid rgb(75 70 74);
  border-radius: 0.5em;
  font: 1.2em sans-serif;

  display: grid;
  place-items: center;
}

結果

除了在容器上應用place-items: center;,你還可以透過在容器上設定place-content: center;,或者透過在內部專案本身上應用place-self: centermargin: auto;來實現相同的居中效果。

MDN 上的資源