Skip to main content

CSS - 元素置中

CSS 元素如何置中,這是一個很常見的問題,不只實務上常用到,面試時有時也會被問到。這裡總結了幾種方法,包括:

  1. flex 置中。
  2. grid 置中。
  3. margin + flex 置中。
  4. position + transform 置中。
tip

其實 1、3、4 實務上滿常用到的,比較需要注意的是 2,用 grid 置中算是滿新鮮的方法。

前置作業

<div class="parent flex">
<div></div>
</div>

<div class="parent grid">
<div></div>
</div>

<div class="parent margin">
<div></div>
</div>

<div class="parent position">
<div></div>
</div>
.parent {
border: black solid 3px;
width: 20vw;
aspect-ratio: 1;

div {
border: red solid 2px;
width: 5vw;
aspect-ratio: 1;
background-color: red;
border-radius: 50%;
}
}

flex 置中

很基本的用法,這裡用 align-items: center;justify-content: center; 來置中。

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

grid 置中

這裡用 place-items: center; 來置中。

.grid {
display: grid;
place-items: center;
}

margin + flex 置中

因為 margin: auto; 會將元素水平置中,所以這裡用 display: flex; 來垂直置中。

.margin {
display: flex;

div {
margin: auto;
}
}

position + transform 置中

這裡用 position: relative;position: absolute; 來置中。

.position {
position: relative;

div {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}